Python正则匹配问题:re.match无法匹配'coordinates'但可匹配'Dumping'
解决re.match无法匹配'coordinates'的问题
嘿,刚入门Python的朋友,别慌!这个问题其实是re.match的特性导致的,我来给你拆解清楚~
问题根源
re.match()方法的核心特点是只从字符串的最开头开始匹配。如果你的目标字符串'coordinates'不是某一行的第一个内容(前面还有其他字符),那它自然匹配不到;而'Dumping'可能刚好出现在某些行的开头,所以能成功匹配。
解决方案
有两种简单的方式可以解决这个问题:
方法1:改用re.search()
re.search()会在整个字符串(也就是每一行)中查找匹配的内容,不管它在什么位置,这应该是最适合你的需求的:
import re # 打开文件逐行读取 with open('你的文件名.txt', 'r', encoding='utf-8') as file: for line in file: # 查找包含'coordinates'的行 if re.search(r'coordinates', line): # 打印整行,strip()去掉多余的换行符 print(line.strip())
方法2:调整re.match的正则表达式
如果你一定要用re.match,可以在正则前面加上.*,表示匹配任意数量的任意字符(直到遇到'coordinates'),这样就能覆盖开头的内容:
import re with open('你的文件名.txt', 'r', encoding='utf-8') as file: for line in file: if re.match(r'.*coordinates', line): print(line.strip())
额外小提示
- 如果需要精确匹配整个单词(避免匹配到类似'coordinatesXYZ'这种包含它的字符串),可以用单词边界
\b,把正则写成r'\bcoordinates\b' - 记得指定文件的编码(比如
encoding='utf-8'),避免出现乱码问题
内容的提问来源于stack exchange,提问作者TgP
相关产品推荐
相关产品推荐

