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”,就会得到第二种结果。这种匹配方式被称为懒惰匹配,而原本尽可能长的方式被称为贪婪匹配。