Пиша прост анализатор на регулярен израз за изхода на помощната програма 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 Consortium! - person Donal Fellows   schedule 21.01.2012