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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Better_Zflyee

交个朋友,多多交流~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值