python中关于"*",".","?"的正则表达式使用注意事项

1 .关于r的用法

import re
...
re.findall(r'这里填写需要查找的字符',text)

其中r表示raw的意思,加上”r”表示不要去转义字符串中的任何字符,保持它的原样。
为什么要加这个?你可以试试print (‘\bhi’)和print (r’\bhi’)的区别。

 >>>print("\bhi")
hi
>>>print(r"\bhi")
\bhi

可以看到,不加r的话,\b就没有了。因为python的字符串碰到“\”就会转义它后面的字符。如果你想在字符串里打“\”,则必须要打“\”。

>>> print "\\bhi"
\bhi

2.通用字符串

“.”在正则表达式中表示除换行符以外的任意字符

try:
    import re
    text = 'Hi, I am lily, I am his wife.'
    m = re.findall(r'i.', text)
    if m:
        print(m)
    else:
        print('Not match!')
except:
    print('Can not run!\nDone!')

显示为:

['i,', 'il', 'is', 'if']

同样,一个符号是“\S”,它表示不是空白符的任意字符。注意是大写字符S。
在很多搜索中,会用“?”表示任意一个字符,“*”表示任意数量连续字符,这种被称为通配符。但在正则表达式中,任意字符是用“.”表示,而“”则不是表示字符,而是表示数量:它表示前面的字符可以重复任意多次(包括0次),只要满足这样的条件,都会被表达式匹配上。

因为“”在匹配时,会匹配尽可能长的结果。如果你想让他匹配到最短的就停止,需要用“.?”。如“I.*?e”,就会得到第二种结果。这种匹配方式被称为懒惰匹配,而原本尽可能长的方式被称为贪婪匹配。

猜你喜欢

转载自blog.csdn.net/geoffrey_zflyee/article/details/78977267
今日推荐