Python: Как поиск regex re.compile (r '^ [- \ w] + $')? Или, как регулярное выражение работает в этом контексте? - PullRequest
2 голосов
/ 27 января 2010

Читая документацию здесь мне кажется, что

re.compile(r'^[-\w]+$')

будет просто искать, есть ли какой-либо символ, который является буквенно-цифровым, подчеркиванием или дефисом. Но на самом деле это возвращает совпадение только в том случае, если все символы соответствуют этому описанию (т. Е. Оно терпит неудачу, если есть пробел, знак доллара, звездочка и т. Д.).

Я не очень понимаю, как это работает, чтобы проверить все символы, когда он говорит:

"*," + "и"? " все квалификаторы жадные, они соответствуют как можно большему количеству текста. "

Не означает ли это, что если в 6-м символе есть пробел, он будет соответствовать как можно большему количеству, а затем остановится и вернет найденное совпадение в первых 5 символах (вместо того, чтобы сказать «извините, я нашел ничего "по существу, когда он достигает несоответствия).

Заранее спасибо (я такой новичок в регулярных выражениях, и каждый раз, когда я изучаю его снова, я просто путаюсь).

Ответы [ 3 ]

4 голосов
/ 27 января 2010

Два символа ^ и $ отмечают начало и конец строки соответственно. Таким образом, ^[-\w]+$ будет соответствовать только в том случае, если между началом (^) и концом строки ($) есть только один или несколько символов слова или дефис ([-\w]+).

3 голосов
/ 27 января 2010

^ и $ привязывают регулярное выражение в начале и конце строки, поэтому все символы должны соответствовать шаблону между ними.

2 голосов
/ 27 января 2010

так же, как и в ответах выше, ^ и $ заключают все символы между ними и представляют соответственно начало и конец строки. Если вы сомневаетесь в каком-либо выражении, попробуйте режим отладки, который обычно многое объясняет:

>>> p = re.compile("^[-\w]+$", re.DEBUG)
at at_beginning
max_repeat 1 65535
  in
    literal 45
    category category_word
at at_end
>>>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...