регулярное выражение только для чисел в строке? - PullRequest
0 голосов
/ 04 мая 2018

Я не могу найти регулярное выражение для строк, содержащих только пробелы или целые числа. Строка является вводом от пользователя на клавиатуре. Он может содержать все, кроме \n (но это не имеет значения, я думаю), но мы можем сосредоточиться на ASCII, поскольку это должны быть английские предложения Вот несколько примеров:

OK:

'1'
'2 3'
'   3 56 '
'8888888       333'
' 039'

не в порядке:

'a'
'4 e'
'874 1231 88 qqqq 99'
' shf ie sh f 8'

У меня есть это, которое находит цифры:

t = [int(i) for i in re.findall(r'\b\d+\b', text)]

Но я не могу получить регулярное выражение. В настоящее время мое регулярное выражение re.match(r'(\b\d+\b)+', text), но оно не работает.

Ответы [ 3 ]

0 голосов
/ 04 мая 2018
>>> re.match(r'^([\s\d]+)$', text)

Необходимо ввести символы начала (^) и конца строки ($). В противном случае часть строки с символами будет совпадать, что приведет к ложному положительному совпадению

0 голосов
/ 04 мая 2018

Чтобы соответствовать только пробелу или цифре, вы можете использовать:

^[ 0-9]+$

Это будет соответствовать с начала строки ^ одним или несколькими пробелами или цифрой с использованием класса символов [ 0-9]+ до конца строки $.

0 голосов
/ 04 мая 2018

Как насчет этого

^ *\d[\d ]*$

См. Демонстрацию на regex101

В шаблоне должна содержаться хотя бы одна цифра.

...