Как я могу получить эквивалент регулярного выражения, если выражение находится в отдельных строках? - PullRequest
0 голосов
/ 27 декабря 2018

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

Datum Kundnummer Sida
2018-10-12 196979 1 /2

Две строки выше находятся в отдельных строках

Что такое эквивалент регулярного выражения, чтобы я получил следующий вывод?

Datum 2018-10-12
Kundnummer 196979

Вышеуказанные два являются отдельными выходами

Я хочу вывод, чтобы он работал для всех дат в датуме и всех чисел в Kundnummer.

Я пробовал Datum\s([12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])) и Kundnummer\s(\d+).

Ответы [ 3 ]

0 голосов
/ 27 декабря 2018

Я предлагаю что-то вроде этого:

reobj = re.compile(r"(?P<datum>\d{4}-\d{1,2}-\d{1,2})\s+(?P<kundnummer>\d+)")
match = reobj.search(input)
if match:
    result1 = match.group("datum")
    result2 = match.group("kundnummer")
0 голосов
/ 27 декабря 2018

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

Чтобы получить записи "Datum" и "Kundennummer" из второй строки, используйте (?P<datum>\d{4}\-\d{1,2}\-\d{1,2})\s(?P<kundennummer>\d+?).*.

Как объяснил @PyHunterMan, вы также можете просто разбить строку в пробелах.Это, вероятно, было бы проще.

0 голосов
/ 27 декабря 2018

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

_input = "Datum Kundnummer Sida\n2018-10-12 196979 1 /2"
lines = _input.split('\n')
old_line_one, old_line_two = lines[0].split(), lines[1].split()
new_line_one = f'{old_line_one[0]} {old_line_two[0]}'
new_line_two = f'{old_line_one[1]} {old_line_two[1]}'
print(f'{new_line_one}\n{new_line_two}')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...