繁体   English   中英

Python重新模式匹配

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM