Как найти число + фразу, используя регулярные выражения?
Необходимо вывести число, после которого следует фраза million или billion, используя регулярные выражения.
Почему такой синтаксис не даёт положительный результат?
text = '199.5 million, 100 million, 80 billion, 1.89 billion, 123 qwerty'
match = re.findall("[0-9]*\.?[0-9]+ \bmillion\b|\bbillion\b", text)
print(match)
должен вывести:
[199.5 million, 100 million, 80 billion, 1.89 billion]
Ответы (2 шт):
Автор решения: gil9red
→ Ссылка
Действия:
Добавил префикс
r, чтобы\не нужно было экранировать (либо без префикса, но добавлять экранирование слешей, т.к.\\)Без экранирования и с ним:
print(repr('\b \\b')) # '\x08 \\b'Обернул выражения в группы (круглые скобки), но без захвата (добавляя
?:после скобки)
Попробуйте:
import re
text = '199.5 million, 100 million, 80 billion, 1.89 billion, 123 qwerty'
items = re.findall(r"\d+(?:\.\d+)? \b(?:million|billion)\b", text)
print(items)
Результат:
['199.5 million', '100 million', '80 billion', '1.89 billion']
Автор решения: Namerek
→ Ссылка
import re
text = '199.5 million, 100 million, 80 billion, 1.89 billion, 123 qwerty'
match = re.findall(r"[\d.]+?\s*?[bm]illion", text)
print(match)
#['199.5 million', '100 million', '80 billion', '1.89 billion']