Частичное совпадение с отрицательным прогнозом с использованием регулярных выражений - PullRequest
0 голосов
/ 06 июля 2018

Используя регулярное выражение с отрицательным взглядом, я должен искать текстовый файл и идентифицировать частично известную строку текста, за которой НЕ следует другая частично известная строка текста. Это упрощенный пример текстового файла:

blahblahblah.Name=qwqwqwqwqw
abracadabra.Surname=ererererer
zxzxzxzxzx.Name=kmkmkmkmkmkm
oioioioi.Name=dfdfdfdfdfdf
popopopopopopo.Surname=lklklklklklklk

В приведенном выше примере вы можете увидеть шаблон, где строка с Имя всегда должна следовать за строкой с Фамилия , но иногда этого не происходит. Я должен идентифицировать те «Строки имени», за которыми не следуют «Строки фамилии».

Я использую поиск файлов в Eclipse (он поддерживает регулярные выражения).

Это одна из моих лучших попыток, я думаю, но она все еще не работает:

(Имя. * \ П) (?!. * Фамилия)

Пожалуйста, поделитесь своими мыслями. С уважением.

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Вот отрицательный взгляд на линию:

^(.*\.Name.*)[\r\n]+(?!.*\.Surname)

Демо

0 голосов
/ 06 июля 2018

.*\bName=.*\n(?!.*\bSurname=) будет делать.

Ниже приведен пример на Python.

import re
s='''blahblahblah.Name=qwqwqwqwqw
abracadabra.Surname=ererererer
zxzxzxzxzx.Name=kmkmkmkmkmkm
oioioioi.Name=dfdfdfdfdfdf
popopopopopopo.Surname=lklklklklklklk'''
print(re.findall(r'\bName=.*\n(?!.*\bSurname=)', s))

Это выводит:

['zxzxzxzxzx.Name=kmkmkmkmkmkm\n']
...