Regex, чтобы получить все вхождения шаблона, сопровождаемые значением в отдельной строке запятой - PullRequest
0 голосов
/ 06 марта 2020

Это в python

Строка ввода :

Str = 'Y=DAT,X=ZANG,FU=_COG-GAB-CANE-,FU=FARE,T=TART,RO=TOP,FU=@-_MAP.com-,Z=TRY'

Ожидаемый результат

'FU=_COG-GAB-CANE_,FU=FARE,FU=@-_MAP.com_'

здесь ' FU = ' - искомый случай, и значение, которое следует за FU =

, возвращает все вхождения FU = ( со связанным значением для FU =) в строке через запятую, они могут встречаться в любом месте строки и допускаются специальные символы.

Ответы [ 2 ]

2 голосов
/ 06 марта 2020

Вот один подход.

>>> import re
>>> str_ = 'Y=DAT,X=ZANG,FU=FAT,T=TART,FU=GEM,RO=TOP,FU=MAP,Z=TRY'
>>> re.findall.__doc__[:58]
'Return a list of all non-overlapping matches in the string'
>>> re.findall(r'FU=\w+', str_)
['FU=FAT', 'FU=GEM', 'FU=MAP']
>>> ','.join(re.findall(r'FU=\w+', str_))
'FU=FAT,FU=GEM,FU=MAP'
0 голосов
/ 07 марта 2020

Работает

Python Код

Импорт re

str_ = 'Y=DAT,X=ZANG,FU=_COG-GAB-CANE-,FU=FARE,T=TART,RO=TOP,FU=@-_MAP.com-, Z = TRY '

str2 =' FU = '+', FU = '. Join (re.findall (r'FU = (. *?),', Str _))

print (str2)

Дает желаемый результат :

'FU=_COG-GAB-CANE-,FU=FARE,FU=@-_MAP.com-'

Успешно выдает мне все вхождения FU = , за которыми следуют значения, независимо от порядка и количества специальных символов.

Хотя это немного нечисто, поскольку я вручную добавляю FU = для первого вхождения. Пожалуйста, предложите, если есть более чистый способ сделать это? , но да, он выполняет свою работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...