Как извлечь ключевое слово из строки в Regex - PullRequest
0 голосов
/ 23 февраля 2020

Например : я хочу извлечь переменную id из этой строки: validateId(id, name) && id=="123". Однако я не хочу извлекать слово id из других мест, например, в этом случае в val<strong>id</strong>ate<strong>Id</strong>. Таким образом, результат в этом случае будет: validateId(<strong>id</strong>, name) && <strong>id</strong>=="123" Я попытался сопоставить по открывающим скобкам в validateId(, но мне не удается извлечь именно то, что мне нужно.

Примечание: id просто Например, я хочу принимать любые ключевые слова. Однако затем я могу изменить регулярное выражение в соответствии с нужным ключевым словом.

1 Ответ

0 голосов
/ 23 февраля 2020

Я предполагаю, что ключевые слова, которые вы хотите извлечь, всегда находятся в одном шаблоне. В этом примере я добавил еще один.

test_str = '''validateId(id, name) && id=="123"
              ParameterValue(Test, name) && Test=="123"'''

Соответствует шаблону предоставленной тестовой строки. В результате ìd и test.

reg_keyword = '(?<=\()(\w+)|(?<=&&\s)(\w+)'

re.findall в этом случае возвращает кортеж, в котором мы удаляем пустые значения и возвращаем список.

keyword = [k[0] for k in re.findall(reg_keyword, test_str) if len(k[0])>1]

Выход

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