Я пишу простой анализатор регулярных выражений для вывода утилиты 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 представлен не так, как у меня? Если да, то как я могу сделать его портативным?
re.UNICODE
RE не совпадает ни с\W\WC
, ни с\WC
. Или я вас неправильно понял? - person snim2   schedule 21.01.2012℃
», который представляет собой одиночный символ, обозначающий градусы Цельсия. Большое спасибо, Консорциум Unicode! - person Donal Fellows   schedule 21.01.2012