Извлечь номер (включая тире) из строки с помощью регулярных выражений в Python - PullRequest
0 голосов
/ 21 марта 2019

Привет и спасибо за помощь.

Примеры строк:

"Привет 43543" ---> "43543"
"Джон Доу 434-234" ---> "434-234"

Мне нужно регулярное выражение, чтобы извлечь примеры справа.

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

Я бы сделал это следующим образом:

import re
pattern = r'\d[0-9\-]*'
number1 = re.findall(pattern,'Hello 43543')
number2 = re.findall(pattern,'John Doe 434-234')
print(number1[0]) #43543
print(number2[0]) #434-234

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

Я хочу отметить, что за до написания шаблона вы должны ответить на вопрос:чему оно должно соответствовать точно ?Мой шаблон работает так, как он предназначен для приведенных вами примеров, но имейте в виду, что это НЕ означает автоматически, что он даст желаемый результат со всеми данными, которые вы, возможно, захотите обработать, используя его.

0 голосов
/ 21 марта 2019

Если все ваши строки такие, вы можете достичь того же самого без re:

s = "John Doe 434-234"
n = s.split()[-1] 

print(n)

>>> "434-234"

Это разделит вашу строку на пробелы и даст вам последнее поле.

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