2015-04-11 5 views
-2

Я пытаюсь написать регулярное выражение для соответствия номерам в заданной строке, ниже удается получить первое число внутри строки, однако оно останавливается там, я хотел бы, чтобы он соответствовал всем номерам в пределах файл, заранее спасибоПовторяя шаблон регулярного выражения

регулярное выражение:

([^\s+\w+\n\r]*(\d))+ 

строка:

hi there this is 1 
yes this is 2 

фактический матч: 1 идеальный матч: 1,2

+1

Как вы используете? Пожалуйста, разместите соответствующий код. Если вам интересно найти числа в заданной строке, почему бы не просто «re.findall (r '\ d +', str)'? – Maroun

+0

Я просто запускаю его в regex101.com – godzilla

+1

Почему не просто '\ d +', 're.findall (" \ d + ", string)'? –

ответ

0

На сайте regex101.com/#python типа g в правом поле рядом с вашим выражением. Этот ящик называется модификатором. И, как другие упоминают в комментариях, используйте re.findall(pattern, your_string) в python. Также обратите внимание, что вы действительно ищете две подстроки - у вас есть две пары фигурных скобок в вашем регулярном выражении.

+0

Я сошел с ума, я сначала попробовал (\ d +), и это не сработало, добавив g в поле справа, исправленное! – godzilla

0
"([\d]+)"g 

Образец

test 13231 test 123123 
123 asdfasdf 
1a2a3 a 

будет соответствовать

MATCH 1 
1. [5-10] `13231` 
MATCH 2 
1. [16-22] `123123` 
MATCH 3 
1. [23-26] `123` 
MATCH 4 
1. [37-38] `1` 
MATCH 5 
1. [39-40] `2` 
MATCH 6 
1. [41-42] `3` 

и объяснений

"([\d]+)"g 
    1st Capturing group ([\d]+) 
     [\d]+ match a single character present in the list below 
      Quantifier: + Between one and unlimited times, as many times as possible, giving back as needed [greedy] 
      \d match a digit [0-9] 
    g modifier: global. All matches (don't return on first match) 
+0

попробуйте в https://regex101.com/#python, это не работает – godzilla

+0

Это ** не ** как вы делаете жадные модификаторы в Python 're' regexes. См. Https://docs.python.org/3/library/re.html#regular-expression-syntax –

+0

Python не имеет такого синтаксиса; флаг 'g' отсутствует. У нас есть функция '' findall() '(https://docs.python.org/2/library/re.html#re.findall). –

Смежные вопросы