соответствие регулярных выражений Python между двумя дикими символами - PullRequest
0 голосов
/ 13 марта 2019

У меня есть файл, содержащий несколько строк в следующем формате.

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

Я хочу получить grep для ac и bad из 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)

Но, похоже, это не работает,Может кто-нибудь, пожалуйста, помогите.

Спасибо,

1 Ответ

1 голос
/ 13 марта 2019

Я думаю, что вам нужно

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)'

ОБНОВЛЕНИЕ: Вы спросили в комментариях, что хотите знать, как запечатлетьценности.Вы делаете это, помещая парены в части, которые хотите захватить, и затем вместо этого вызываете 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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...