如何使用结合正则表达式和字符串/文件操作的Python在文本文件中搜索模式,并存储模式实例?
因此,本质上,我正在文本文件的两个尖括号内寻找特定的4位代码。我知道我需要打开文本文件,然后逐行解析,但是我不确定在检查“文件中的行”之后构造代码的最佳方法。
我想我可以以某种方式拆分,剥离或分区,但我还编写了一个正则表达式,并在其上进行了编译,因此如果返回匹配对象,我认为我不能将其用于那些基于字符串的操作。我也不确定我的正则表达式是否足够贪婪…
我想将所有找到的匹配的所有实例存储为元组或列表中的字符串。
这是我的正则表达式:
regex = re.compile("(<(\d{4,5})>)?")
考虑到到目前为止它相当基本,我认为不需要包含所有代码。
-
import re pattern = re.compile("<(\d{4,5})>") for i, line in enumerate(open('test.txt')): for match in re.finditer(pattern, line): print 'Found on line %s: %s' % (i+1, match.group())
关于正则表达式的几点注意事项:
- 如果您不想将数字与尖括号匹配,而只需要数字本身,则不需要
?
在末尾和外部(...)
- 它与尖括号之间的4位或5位数字匹配
更新: 重要的是要了解正则表达式中的 匹配 和 捕获 可能完全不同。我上面的代码段中的正则表达式与 带有
尖括号的模式匹配,但是我要求仅捕获内部编号, 而不带 尖括号。在python中可以找到更多有关正则表达式的信息:
正则表达式HOWTO - 如果您不想将数字与尖括号匹配,而只需要数字本身,则不需要