Я исправил это, переустановив инструмент Gnome Tweak Tool и перезапустив Gnome Shell.
Здесь есть две вещи:
re.findall возвращает захваченные тексты, если шаблон регулярного выражения содержит группы захвата, в нем часть r'\\.' в вашем шаблоне совпадает с двумя последовательными символами, \ и любой символ, отличный от новой строки.См. ссылку findall:
Если одна или несколько групп присутствуют в шаблоне, верните список групп; это будет список кортежей, если шаблон имеет более одной группы. Пустые совпадения включаются в результат, если они не касаются начала другого матча.Обратите внимание, что для того, чтобы re.findall возвращали только совпадающие значения, вы можете обычно
re.findall возвращать захваченные тексты, если шаблон регулярного выражения содержит группы захвата в нем преобразовать все группы захвата в не-захват (то есть заменить ( на (?:), если не будут обратные ссылки, которые относятся к значениям группы в шаблоне (см. ниже) часть r'\\.' в вашемВ вашем случае findall возвратил все захваченные тексты, которые были пустыми, потому что у вас \\ в r'', который пытался сопоставить литерал \.
Чтобы соответствовать номерам, вам нужно использовать
-?\d*\.?\d+
Регулярное выражение:
преобразует все группы захвата в не захватывающие (что заменяет ( на (?:), если нет обратных ссылок, которые относятся к групповым значениям в шаблоне (см. ниже) \d* - Необязательные цифры \.? - Дополнительный десятичный разделитель \d+ - 1 или более цифр.См. findall ссылка
Вот демон IDEONE:
import re
s = r'abc123d, hello 3.1415926, this is my book'
pattern = r'-?\d*\.?\d+'
L = re.findall(pattern, s)
print(L)