Python: использование двух переменных строк в качестве критерия Regex.findall - PullRequest
0 голосов
/ 26 апреля 2020

Что случилось, ребята, я пытаюсь получить две строки и пытаюсь найти каждый текст, дополненный двумя строками. Например:

Pattern_text = '\|\|####\|\|' #To be received from user
first_half= Pattern_text [0:len(Pattern_text )//2]  # to get left side of pattern \\##
second_half= Pattern_text [len(Pattern_text )//2:]  # to get right side of pattern ##\\
#Sample text
SEARCH_ME = r"BLABLABLA BLA ||##MATCH_ID_1548##|| BLA ||##MATCH_ID_3412##|| BLABLABLA"
#Trying to find all matches padded by the two halves
results = re.findall((first_half+ r'(.*?)'+second_half), SEARCH_ME)
print(results)

результаты всегда пустые в этом случае. ожидаемыми результатами должен быть список, элементами которого являются 'MATCH_ID_1548' и'MATCH_ID_3412 '

Как вы считаете, что мне следует делать с этими двумя строковыми переменными, зная, что я уверен, что регулярное выражение объединенной строки (first_half + '(. *?)' + second_half) работает в жестком коде. Но не в этом формате.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2020

Вот другой способ. Он также будет работать в тех случаях, когда ваш 4-й git соответствует идентификатору масштаба до 5-ди git или более.

import re

SEARCH_ME = r"BLABLABLA BLA ||##MATCH_ID_1548##|| BLA ||##MATCH_ID_3412343434##|| BLABLABLA"

print(re.findall(re.compile('(?:MATCH_ID_[0-9]{4,})'), SEARCH_ME))

Результат:

['MATCH_ID_1548', 'MATCH_ID_3412343434']
0 голосов
/ 26 апреля 2020

Вот краткий пример того, что работает на моем конце. Мы могли бы помочь вам намного больше, если вы предоставите полный и воспроизводимый пример в вопросе.

import re

prefix = "prefix #"
suffix = "# suffix"

regex = fr"{prefix}(.*?){suffix}"  # Renders as "prefix #(.*?)# suffix"
test_string = "prefix #TEST STRING# suffix"

print(re.findall(regex, test_string))  # ['TEST STRING']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...