RegEx для повторяющейся фразы - PullRequest
0 голосов
/ 18 марта 2019

У меня есть следующая фраза:

05/30/2016 07:02 AM (GMT+02:00) added by XXX YYY (PID-000301):\tSome_alphanum_text_Some_alphanum_text_Some_alphanum_text_Some_alphanum_text\t\t*************************************************************************************************\t05/12/2016 02:03 PM (GMT+02:00) added by ZZZ AAA (PID-000301):\tSome_other_alphanum_text_Some_other_alphanum_text_Some_other_alphanum_text_Some_other_alphanum_text\t\t

Я хотел бы написать RegEx, который просто собирает для меня только «Some_alphanum_text» и «Some_other_alphanum_text».

Пока я пытался попытать счастья с чем-то вроде этого:

r'(?:.+\(PID-\d{6}\):)(.+)'

Но это только дает мне вхождение Some_other_alphanum_text. Там может быть более 2 уникальных строк, которые мне нужно вычеркнуть из этого беспорядка текста. Есть идеи?

Ответы [ 4 ]

0 голосов
/ 18 марта 2019

Я думаю, вы могли бы использовать это, чтобы найти все вхождения текста между "\t" s enter image description here

0 голосов
/ 18 марта 2019

Полагаю, вам нужно это регулярное выражение:

\(PID-\d{6}\):\\t(.+?)(?:\\t){2}

regex101

0 голосов
/ 18 марта 2019

Я не изменил область регулярных выражений на кодовый блок, чтобы она не работала.

Теперь это работает!Одна вещь, которую вы должны учитывать, это то, что не может быть '\ t'.Но

каждый соответствующий текст соответствует формату даты, такому как 05/12/2016 02:03 или заканчивается.

\(PID-\d{6}\)[\n\r\t\s]*:(?:.|[\n\r\t\s])*?(?=[0-9]{2}\/[0-9]{2}\/[0-9]{4}[\n\r\t\s]*[0-9]{2}:[0-9]{2}|$)

enter image description here

0 голосов
/ 18 марта 2019

Вам нужно заменить .+ на что-то, что соответствует только тому, что вы хотите вернуть. Поскольку вы хотите соответствовать только буквенно-цифровому тексту, используйте \w вместо .

r'(?:\(PID-\d{6}\):)\s*(\w+)'

Вам нужно \s* перед второй группой, потому что пробел перед буквенно-цифровым текстом не будет совпадать \w+.

Вам также не нужно .+ в начале. Матч просто начнется там, где он найдет PID.

DEMO

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