шаблон, соответствующий всем номерам n-di git перед текстом non-di git - PullRequest
0 голосов
/ 24 марта 2020

Я хочу построить регулярное выражение для этой задачи с Python 3.7.5. Вводимые тексты выглядят следующим образом:

alkdj flajf
123 adlf ja;ld fj 999
423 234 2359 kalfji lkja;lkd999

Моя цель - получить все числа в первых позициях, пробел после каждого числа и получить список, подобный следующему

[]
[123]
[423, 234, 2359]

Любой совет ценится!

Ответы [ 2 ]

2 голосов
/ 24 марта 2020
import re

data = '''
alkdj flajf
123 adlf ja;ld fj 999
423 234 2359 kalfji lkja;lkd999
'''
pattern = re.compile(r'([0-9 ]+) \w.*?')

pattern.findall(data)

Выходы:

['123', '423 234 2359']
0 голосов
/ 25 марта 2020

Если вы хотите захватить числа отдельно, мы могли бы использовать необычный оператор \G continue:

import regex as re
rgx = r"(?|^(\d+)|\G \K(\d+))"
test_str = ("alkdj flajf\n"
    "123 adlf ja;ld fj 999\n"
    "423 234 2359 kalfji lkja;lkd999")

matches = re.finditer(rgx, test_str, re.MULTILINE)
for match in matches:
    print(match.group(1))

Demo (для демонстрации требуется PCRE, поэтому я импортирую альтернативный модуль регулярных выражений)

Я также использую Branch Reset (?|) и оператор сброса \K, чтобы заставить вещи работать.

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