今天坐地铁时看了下正则表达式的文章,今天就来试验下。
假如我想匹配https://blog.csdn.net/weixin_44981444/article/details/108477207 中的blog.csdn.net
import re
s = "https://blog.csdn.net/weixin_44981444/article/details/108477207"
tt=re.search(r'b.*t',s,flags=0)
print(type(tt))
print(tt.group())
输出结果:
<class '_sre.SRE_Match'>
blog.csdn.net/weixin_44981444/article/det
发现不是我想要的,原来正则表达式的*默认是尽量去匹配最长的,所以要他匹配最短的,要改一下
import re
s = "https://blog.csdn.net/weixin_44981444/article/details/108477207"
tt=re.search(r'b.*?t',s,flags=0)
print(tt.group())
输出结果:
blog.csdn.net
达到效果.原来我还不知道?加在哪里,后来参考了下别人的代码,原来是加上*后面.想一想也是这样的,因为引起贪婪匹配的地方就是.*这一点。
今天学到的知识:
- re.search的结果是一个match object对象,要输出查找到子串要用group()方法。
- *默认是贪婪匹配,加上?可以使其变成非贪婪匹配。
参考文章:https://www.cnblogs.com/tina-python/p/5508402.html