首页 > 代码库 > python正则表达式记录
python正则表达式记录
元字符:
* 星号 它指定前一个字符可以被匹配零次或更多次
>>> re.match(‘a[bcd]*b‘, ‘abcbdabcd‘).group() ‘abcb‘ >>> re.match(‘a[bcd]*b‘, ‘abcbdbcd‘).group() ‘abcbdb‘ >>>
匹配a和b之间的字符,如果有,那么继续直到没有为止。所以它是贪婪匹配。
如果a和b之间有字符,但是不是bcd中的任意一个那么将会停止,取到上次匹配的结果。
+ 加号 指定前边的字符一次或者更多次。区别于 * 的是,至少需要一次。
>>> re.match(‘c+t‘, ‘ctct‘).group() ‘ct‘ >>> re.match(‘c+t‘, ‘tct‘).group() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: ‘NoneType‘ object has no attribute ‘group‘ >>>
+ 是非贪婪匹配。只要满足条件找到一个就结束。
? 问号 匹配一次或零次 可以认为它用于标识某事物是可选的。例如:home-?brew 匹配 "homebrew" 或 "home-brew"。
>>> re.match(‘www-?mmm‘, ‘www-mmm‘).group() ‘www-mmm‘ >>> re.match(‘www-?mmm‘, ‘wwwmmm‘).group() ‘wwwmmm‘ >>>
可以看到有无 - 减号都可以
最复杂的重复限定符是 {m,n}(注意m,n之间不能有空格),其中 m 和 n 是十进制整数。
该限定符的意思是至少有 m 个重复,至多到 n 个重复。
举个例子,a/{1,3}b 将匹配 "a/b","a//b" 和 "a///b"。它不能匹配 "ab" 因为没有斜杠,也不能匹配 "a////b" ,因为有四个。
>>> re.match(‘a/{1,3}b‘, ‘a/b‘).group() #一个斜杠 ‘a/b‘ >>> re.match(‘a/{1,3}b‘, ‘ab‘).group() #没有斜杠 Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: ‘NoneType‘ object has no attribute ‘group‘ >>> re.match(‘a/{1,3}b‘, ‘a////b‘).group() #四个斜杠 Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: ‘NoneType‘ object has no attribute ‘group‘ >>>
细心的读者也许注意到其他三个限定符都可以用这样方式来表示。
{0,} 等同于 *,{1,} 等同于 +,而 {0,1} 则与 ? 相同。
如果可以的话,最好使用 *,+,或?。很简单因为它们更短也更容易懂。
python正则表达式记录
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。