Я пишу простой анализатор регулярных выражений для вывода утилиты 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 представлен по-разному для моего? Если да, то как я могу сделать его переносимым?