Регулярное выражение для извлечения чисел вокруг sla sh "/" - PullRequest
0 голосов
/ 12 февраля 2020

Я пытался извлечь числа в формате, подобном "**/*,**/*".

Например, для строки "272/3,65/5" я хочу получить list = [272,3,65,5]

, который я пытался использовать \d*/ и /\d* для извлечения 272,65 и 3,5 по отдельности, но я хочу знать, есть ли способ получить список, который я показал выше. Спасибо!

Ответы [ 2 ]

1 голос
/ 12 февраля 2020
#importing regular expression module
import re
# input string
s = "272/3,65/5"
# with findall method we can extract text by given format
result = re.findall('\d+',s)
print(result) # ['272', '3', '65', '5']
['272', '3', '65', '5']

, где \ d означает совпадение цифр в заданном вводе, если мы используем \ d, это дает вывод, как показано ниже

result = re.findall('\d',s)
['2', '7', '2', '3', '6', '5', '5']

, поэтому мы должны использовать \ d +, где + совпадения в возможных совпадениях вплоть до сбоя соответствует

0 голосов
/ 12 февраля 2020

Вы можете использовать [0-9] для представления одного десятичного числа git. так что лучшим способом написания регулярного выражения было бы что-то вроде [0-9]*/?[0-9]+,[0-9]+/?[0-9]*. Я предполагаю, что вы пытаетесь сопоставить дробные точки, такие как 5,2/3, 23242/234,23 или 0,0.

Разбивка основных компонентов в [0-9]*/?[0-9]+,[0-9]+/?[0-9]*:

  • [0-9]* соответствует 0 или более цифрам
  • /? опционально соответствует '/'
  • [0-9]+ соответствует хотя бы одному ди git

Мой любимый инструмент для отладки регулярных выражений - https://regex101.com/, так как он объясняет, что означает каждый из операторов, и показывает вам, как регулярное выражение выполняет предварительную выборку для выбранного вами образца при его написании.

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