Как переносимо анализировать символ степени (Unicode) с помощью регулярных выражений?

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

15
задан snim2 21 January 2012 в 10:56
поделиться