我有一个文件,其中包含一些具有以下格式的行。
...
...
ABC_DEF( ac, bad, dd, ..)
...
...
我想从ABC_DEF中获取ac和坏的grep信息,并修改文件以使..
...
...
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)
但这似乎不起作用。有人可以帮忙吗。
谢谢
答案 0 :(得分:1)
我认为您需要
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'