正则表达式

2019-08-14  本文已影响0人  Reiko士兵
  1. re --- 正则表达式操作
  2. Python正则表达式前向/后向搜索的肯定/否定模式的区别和示例
一、 基本参数使用
.  匹配除换行符外的任意字符,flag指定re.DOTALL时换行符也匹配

^  匹配字符串开头,指定re.MULTILINE后可匹配换行后的首个符号

$  匹配字符串结尾,指定re.MULTILINE后可匹配换行前的首个符号

*  匹配前面正则表达式任意次,尽可能多地匹配(贪婪模式)

+  匹配前面正则表达式1次以上,尽可能多地匹配(贪婪模式)

? 匹配前面正则表达式0或1次,尽可能多地匹配(贪婪模式)

{m}  匹配前面正则表达式m次

{m,n}  匹配前面正则表达式m到n次,尽可能多地匹配(贪婪模式)

*?|+?|??|{m,n}?  对上述4种匹配尽可能少地匹配(非贪婪模式)

[]  匹配集合中任意一个字符,^可用于不匹配,-用于选取范围

()  匹配组合中任意一种模式,|用于分隔不同模式,模式可用\1之类的数字再次匹配

(?P<name>…)  给组合命名

(?P=name)  捕获命名的组合

(?#…)  注释

(?=…)  匹配组合,但是不捕获,无法在后面引用

(?=exp)  匹配exp前面的,Isaac (?=Asimov)  只有后面是 'Asimov' 的时候才匹配 'Isaac ' 。

(?!exp) 不匹配exp前面的 ,Isaac (?!Asimov) 只有后面 不 是 'Asimov' 的时候才匹配 'Isaac ' 。

(?<=exp)  匹配exp后面的,(?<=Isaac) Asimov 只有前面是 'Isaac' 的时候才匹配 'Asimov'。

(?<!exp)  不匹配exp后面的,(?<!Isaac) Asimov 只有前面不是 'Isaac' 的时候才匹配 'Asimov'。

(?(id/name)yes-pattern|no-pattern)  如果给定的 id 或 name 存在,匹配 yes-pattern ,否则匹配 no-pattern。

\n  匹配第n个组合中模式

\b  匹配单词边界

\d  匹配十进制数字

\s  匹配空白字符

\w  匹配字母数字下划线

\B|\D|\S|\W 对以上四种匹配模式的取反
二、 几个例子

1. 匹配邮件地址

 (<)?(\w+@\w+(?:\.\w+)+)(?(1)>|$) 

2. notepad++替换去重

^(.*?)$\s+?^(?=.*^\1$)

3. 判断质数

^.?$|^(..+?)\1+$
上一篇 下一篇

猜你喜欢

热点阅读