繁体   English   中英

python正则表达式在两个通配符之间的匹配

[英]python regex matching between two wild characters

我有一个包含以下格式的行的文件。

...
...
ABC_DEF( ac, bad, dd, ..)
...
...

我想grep从ABC_DEF的交流和坏,并修改文件,这样..

...
...
ac, bad, 
ABC_DEF(dd, ...)
...
...

ac和bad只是示例,它将是具有一定大小的字母数字字符。

我在python中有以下代码

import re
for line in fileinput.input(inplace=1):
    line = re.sub(r'ABC_DEF\(\w+,\w+,', r'ABC_DEF(', line.rstrip())
    print(line)

但这似乎不起作用。 有人可以帮忙吗?

谢谢,

我觉得你需要

line = re.sub(r'ABC_DEF\(\s*\w+\s*,\s*\w+\s*,\s*', r'ABC_DEF(', line.rstrip())

因为单词周围可能有空格。

>>> line = 'ABC_DEF(  first ,  second   , third, fourth)'
>>> line = re.sub(r'ABC_DEF\(\s*\w+\s*,\s*\w+\s*,\s*', 
r'ABC_DEF(', line.rstrip())
>>> line
'ABC_DEF(third, fourth)'

更新:您在注释中询问您想知道如何捕获值。 通过将parens放置在要捕获的部分上,然后调用re.match来实现。 像这样:

>>> line = 'ABC_DEF(  first ,  second   , third, fourth)'
>>> match = re.match(r'ABC_DEF\(\s*(\w+)\s*,\s*(\w+)\s*,\s*', line)
>>> match.group(1)
'first'
>>> match.group(2)
'second'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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