2012-12-12 2 views
1

Я следую учебнику о регулярном выражении. Я получаю сообщение об ошибке:Основные операции с регулярными выражениями в Python

regex = r'(+|-)?\d*\.?\d*' 

По-видимому, Python не нравится (+ | -). В чем может быть проблема?
Кроме того, что может быть проблемой при добавлении r перед регулярным выражением?

ответ

3

Вам нужно бежать + в регулярных выражениях, чтобы получить буквальное +, потому что это обычно означает «один или более экземпляров что-то»:

regex = r'(\+|-)?\d*\.?\d*' 

И r делает это «сырые» строки , Без r escape-последовательности регулярного выражения будут интерпретироваться как последовательности escape-последовательности строк, и они вызовут всевозможные проблемы. (\b является промежуточным пространством вместо границы слова и т. Д.)

3

+ - особый символ. Вы можете использовать скобки для указания диапазона символов, который лучше, чем при использовании «или» с характером трубы в этом случае .:

regex = r'([+-])?\d*\.?\d*' 

В противном случае, вам просто нужно, чтобы избежать его в оригинальной версии:

regex = r'(\+|-)?\d*\.?\d*' 

Использования r является предпочтительным способом определения регулярного выражения строки в Python, потому что это указует на сырую строку, которая не должно быть интерпретирована и уменьшает количество вытекающего необходимо выполнить с обратными косой чертой. Это просто идиома регулярного выражения python, которую вы увидите повсюду.

r'(\+|-)?\d*\.?\d*' 
#'(\\+|-)?\\d*\\.?\\d*' 
Смежные вопросы