2016-11-30 7 views
1

Я никогда раньше не использовал регулярные выражения, и я тестировал несколько примеров. Я не понимаю, почему регулярное выражение ^([a-z] | a)$ не соответствует строке 'a'.

Как я понял [a-z] эквивалентно (a | b | c | ... | y | z), поэтому [a-z] | a должно быть эквивалентно (a | b | c | ... | y | z) | a, что одно и то же сказать (a | b | c | ... | y | z) или [a-z].

По этой причине строка str соответствует ^([a-z] | a)$, если соответствует ^[a-z]$.

Вот почему я не понимаю, почему, что регулярное выражение не соответствует строке «а» или «е», например.

PS: Я тестировал это в этом page.

+8

Поскольку он соответствует любой букве между 'a' и 'z' ** + пробелом ** или ** пробелом ** + 'a'. – JJJ

+8

Пробелы вокруг | является значительным –

ответ

5

Пространства в регулярных выражениях. Удалите пространства вокруг трубы (|), и он должен работать.

Смежные вопросы