Python使用re模块匹配仅由纯字母组成的单词结果不符合预期如何解决?
正则匹配错误原因与正确实现
各写法问题分析
word1匹配失败原因:Python普通字符串中\b是代表退格的转义字符,不会被识别为正则语法中的单词边界,因此无法命中任何符合要求的内容。word2匹配失败原因:正则中的^、$分别代表整个字符串的开头、结尾,该写法只有在整个字符串完全由纯英文字母组成时才会返回结果,和需求场景不符。word3匹配结果不符合预期原因:\w的匹配范围包含大小写字母、数字、下划线,因此会把纯数字、混合字母数字的内容也一并提取,不符合仅提取纯英文字母单词的要求。
正确代码
import re string1= "This is a nice day - 23 Sep 2019 Oct2021" # 正则字符串前加r标记为原始字符串,保证\b被识别为单词边界 result = re.findall(r'\b[a-zA-Z]+\b', string1) print(result)
运行后输出为期望结果:['This', 'is', 'a', 'nice', 'day', 'Sep']
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

