关于Python中的正则表达式

1 .关于r的用法

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

其中r表示raw的意思,加上”r”表示不要去转义字符串中的任何字符,保持它的原样。
为什么要加这个?你可以试试print “\bhi”和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”,就会得到第二种结果。这种匹配方式被称为懒惰匹配,而原本尽可能长的方式被称为贪婪匹配。

全部评论

相关推荐

嵌入式求职之路:可以看我经验😂,https://www.nowcoder.com/share/jump/73221730841876945
点赞 评论 收藏
分享
05-14 16:55
广州大学 Java
面试情况25届双非本科,有 ACM 竞赛经历,两段实习(小厂 + 独角兽)。以下为2024年11月到次年5月的春招及其补录面试情况,若对个人秋招经历感兴趣,可查看另一篇置顶文章。通过某区级供水国企汇丰科技:线上行为测评 → Coding 测试 → 线下技术 & HR 面东方财富:一、二轮线上面,三轮线下技术面招银科技:一轮线上技术,二轮、三轮线下技术和HR元戎启行:三轮技术面 + HR 面,一共四面面试挂拼多多:客户端,三轮技术面挂,手撕没撕出来4399:一轮技术面挂微派:一轮技术面挂,手撕没撕出来以下是个人无意向故提前主动终止流程,以免影响其他候选人广州农商银行:线下笔试,一轮面试...
isjsns:同双非本,最后的总结那块挺赞同的,我们计院的就业数据也就那样,年包二十到四十万的人也有,但少之又少,周围有认识的地信和电子的也有二到四十万的,找的还不错的包括我基本都是春招才找到的,个人是感觉春招机会挺多的,也可能是像楼主一样年初又找了个实习加技术又沉淀了一波的原因,本来秋招结束都想摆了,最后还是熬出来了大家别放弃啊,双非本也有翻身的机会的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务