В чем разница между закрывающей частью регулярного выражения в() (круглые скобки) и выполнением ее в [] (квадратные скобки)?
Как это сделать:
[a-z0-9]
отличаются от этого:
(a-z0-9)
?
В чем разница между закрывающей частью регулярного выражения в() (круглые скобки) и выполнением ее в [] (квадратные скобки)?
Как это сделать:
[a-z0-9]
отличаются от этого:
(a-z0-9)
?
[]
обозначает класс символов. ()
обозначает группу захвата.
[a-z0-9]
- Один символ, который находится в диапазоне a-z
ИЛИ 0-9
(a-z0-9)
- Явный захват a-z0-9
. Нет диапазонов.
a
- Может быть захвачен [a-z0-9]
.
a-z0-9
- Может быть зафиксировано с помощью (a-z0-9)
, а затем можно ссылаться на замену и/или позже в выражении.
(…)
представляет собой группу которая группирует содержимое, как в математике; (a-z0-9)
- сгруппированная последовательность a-z0-9
. Группы особенно используются с quantifiers, которые позволяют повторять предыдущее выражение в целом: a*b*
соответствует любому числу a
s, за которым следует любое число b
s, например a
, aaab
, bbbbb
и т.д.; в отличие от этого, (ab)*
соответствует любому числу ab
s, например. ab
, abababab
и т.д.
[…]
представляет собой класс символов , который описывает параметры для одного символа; [a-z0-9]
описывает один единственный символ, который может иметь диапазон a
- z
или 0
- 9
.
Конструкция []
в регулярном выражении является по существу сокращением для |
для всего содержимого. Например [abc]
соответствует a, b или c. Кроме того, символ -
имеет особое значение внутри []
. Он предоставляет конструкцию диапазона. Регулярное выражение [a-z]
будет соответствовать любой букве от a до z.
Конструкция ()
представляет собой конструкцию группировки, устанавливающую порядок приоритета (она также оказывает влияние на доступ к подстрочным подстрокам, но немного более сложная тема). Регулярное выражение (abc)
будет соответствовать строке "abc".
[a-z0-9]
будет соответствовать любой строчной букве или номеру. (a-z0-9)
будет соответствовать точной строке "a-z0-9"
и допускает две дополнительные вещи: вы можете применять модификаторы, такие как *
и ?
и +
для всей группы, и вы можете ссылаться на это соответствие после матча с помощью $1
или \1
. Однако не полезно использовать ваш пример.
Попробуйте ([a-z0-9]), чтобы захватить смешанную строку строчных букв и цифр, а также захват для обратных ссылок (или извлечения).
[a-z0-9]
будет соответствовать одному из abcdefghijklmnopqrstuvwxyz0123456789
. Другими словами, квадратные скобки соответствуют одному символу.
(a-z0-9)
будет соответствовать двум символам, первый из них - один из abcdefghijklmnopqrstuvwxyz
, второй - один из 0123456789
, как если бы скобки не были там. Функция() позволит вам точно определить, какие символы были сопоставлены. Скобки также полезны для OR'ing двух выражений с символом bar |
. Например, (a-z|0-9)
будет соответствовать одному символу - любой из строчных букв или цифр.