一、 基本参数使用
. 匹配除换行符外的任意字符,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+$
网友评论