Python re模块无法匹配斜杠后的字符串,请求技术解答
问题解析与解决办法
哈哈,这个正则的小坑我刚入门的时候也踩过!你遇到的问题和/是不是普通字符完全没关系,核心是**re.match()方法的匹配规则**——它只会从字符串的起始位置开始尝试匹配,你的字符串是link/123,开头是l,根本不是123,所以自然返回None啦。
解决方法有两种:
- 改用
re.search()方法:它会扫描整个字符串去寻找匹配的内容,不管位置在哪里,代码调整后如下:
import re mystr='link/123' pattern = re.compile(r'123') print(pattern.search(mystr)) # 会返回匹配对象 <re.Match object; span=(5, 8), match='123'>
- 如果一定要用
match,可以修改正则表达式,让它匹配开头到123的任意内容,比如:
import re mystr='link/123' pattern = re.compile(r'.*123') print(pattern.match(mystr)) # 同样会返回匹配对象
不过这种方式有点画蛇添足,search是更直接的选择。
额外补充:
re.match():仅匹配字符串开头re.search():扫描整个字符串,返回第一个匹配项re.fullmatch():要求整个字符串完全和正则匹配
内容的提问来源于stack exchange,提问作者tim chen
相关产品推荐
相关产品推荐

