Я пишу простой синтаксический анализатор регулярных выражений для вывода датчиков
в 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
, который начинается с сопоставления знака +
или -
и заканчивается сопоставлением ° С
.
У меня вопрос: почему для соответствия °
требуется два \ W
(не буквенно-цифровых) символов, а не один? Будет ли код ломаться в системах, где Unicode представлен иначе, чем в моей? Если да, то как я могу сделать его переносимым?