[英]Python re pattern matching
我正在尝试使用re模块解决正则表达式标识的问题。 我想从文件中复制一些以*开头的行,确切的行模式是:
*7 3 279 0
字符之间有制表符。 我与行匹配的正则表达式是:
regex=re.compile(r'^\*\d+.\n', re.MULTILINE)
for line in f:
if regexp.match(line)
print >> a, line
我编写的脚本创建了文件“ a”,但该文件为空,无法识别该模式。 你有什么建议吗?
此外,您能解释一下双引号和单引号之间的区别吗? 我在几个python手册中进行了搜索,但没有找到任何信息。
您不会使用正则表达式捕获行的总数,而只是匹配以下类型的行:
*7
^\\*(?:\\d+\\s+)+$
应该可以工作,不需要多行,因为您将正则表达式应用于文件的每一行。
编辑:更改为非捕获组,因为它不需要。
假设您仅在行首寻找*
+ number,则只需执行以下操作:
regex=re.compile(r'\*\d+')
for line in f:
if regexp.match(line)
print >> a, line
如果您关心找到的以空格分隔的数字数量:
regex=re.compile(r'\*(?:\d+\s+){3}\d+')
for line in f:
if regexp.match(line)
print >> a, line
如果使用re.match
,则不需要^
锚。 如果使用re.search
,则可以。 查看文件
试试这个:
re.compile(r'^\*\d\s+\d+\s+')
不知道python,但正则表达式似乎应该是^[*][\\d(\\s)*]+$
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.