регулярное выражение - сопоставить несколько полей в строке - PullRequest
0 голосов
/ 11 апреля 2020

Я изо всех сил пытаюсь найти регулярное выражение, которое извлечет поля 2, 3, 4 из этой цепочки:

field ('field2', field3, field4)

  • поле - буквы, всегда одинаковые и не обязательные
  • field2 - alphanumeri c с некоторыми символами, такими как: - _ @
  • field3 и field4 только цифры (0000 или больше)

вот некоторые примеры цепочки:

rooming ('2003463071', 100077,97297)

rooming ('Pierre_Garin', 53030,4853)

Мне нужно создать массив с 3 значениями.

Я делал это с:

regExp = "('. +')"

regExp = "([0-9] {6} | [0-9] {5} | [0-9] {4})"

или

regExp = "(\ w)"

но это не охватывает все случаи ... Есть ли способ поймать 3 поля сразу ? Один за другим тоже хорошо.

Как справка, если кто-то может показать мне оба пути, это будет очень полезно.

Ура!

1 Ответ

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

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

import re

pattern = re.compile(r"\('(.*?)',(\d+),(\d+)\)")

text = '''
rooming('2003463071',100077,97297)

rooming('Pierre_Garin',53030,4853)
'''

print(pattern.findall(text))

Выходы:

[('2003463071', '100077', '97297'), ('Pierre_Garin', '53030', '4853')]

Демонстрация регулярного выражения: https://regex101.com/r/auzkeI/1

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