Я пишу простой анализатор регулярных выражений для вывода утилиты sensors
на Ubuntu. Вот пример строки текста, которую я разбираю:
temp1: +31.0°C (crit = +107.0°C)
И вот регулярное выражение, которое я использую, чтобы сопоставить это (в Python):
temp_re = re.compile(r'(temp1:)\s+(\+|-)(\d+\.\d+)\W\WC\s+'
r'\(crit\s+=\s+(\+|-)(\d+\.\d+)\W\WC\).*')
Этот код работает так, как ожидалось, и соответствует приведенному выше примеру текста. Единственные биты, которые мне действительно интересны, это числа, поэтому этот бит:
(\+|-)(\d+\.\d+)\W\WC
который начинается с сопоставления знака +
или -
и заканчивается путем сопоставления °C
.
Мой вопрос: зачем двум \W
(не буквенно-цифровым) символам соответствовать °
, а не одному? Будет ли разрыв кода в системах, где Unicode представлен по-разному для моего? Если да, то как я могу сделать его переносимым?