Подтвердить что ты не робот

Какая разница между() и [] в шаблонах регулярных выражений?

В чем разница между закрывающей частью регулярного выражения в() (круглые скобки) и выполнением ее в [] (квадратные скобки)?

Как это сделать:

[a-z0-9]

отличаются от этого:

(a-z0-9)

?

4b9b3361

Ответ 1

[] обозначает класс символов. () обозначает группу захвата.

[a-z0-9] - Один символ, который находится в диапазоне a-z ИЛИ 0-9

(a-z0-9) - Явный захват a-z0-9. Нет диапазонов.

a - Может быть захвачен [a-z0-9].

a-z0-9 - Может быть зафиксировано с помощью (a-z0-9), а затем можно ссылаться на замену и/или позже в выражении.

Ответ 2

(…) представляет собой группу которая группирует содержимое, как в математике; (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.

Ответ 3

Конструкция [] в регулярном выражении является по существу сокращением для | для всего содержимого. Например [abc] соответствует a, b или c. Кроме того, символ - имеет особое значение внутри []. Он предоставляет конструкцию диапазона. Регулярное выражение [a-z] будет соответствовать любой букве от a до z.

Конструкция () представляет собой конструкцию группировки, устанавливающую порядок приоритета (она также оказывает влияние на доступ к подстрочным подстрокам, но немного более сложная тема). Регулярное выражение (abc) будет соответствовать строке "abc".

Ответ 4

[a-z0-9] будет соответствовать любой строчной букве или номеру. (a-z0-9) будет соответствовать точной строке "a-z0-9" и допускает две дополнительные вещи: вы можете применять модификаторы, такие как * и ? и + для всей группы, и вы можете ссылаться на это соответствие после матча с помощью $1 или \1. Однако не полезно использовать ваш пример.

Ответ 5

Попробуйте ([a-z0-9]), чтобы захватить смешанную строку строчных букв и цифр, а также захват для обратных ссылок (или извлечения).

Ответ 6

[a-z0-9] будет соответствовать одному из abcdefghijklmnopqrstuvwxyz0123456789. Другими словами, квадратные скобки соответствуют одному символу.

(a-z0-9) будет соответствовать двум символам, первый из них - один из abcdefghijklmnopqrstuvwxyz, второй - один из 0123456789, как если бы скобки не были там. Функция() позволит вам точно определить, какие символы были сопоставлены. Скобки также полезны для OR'ing двух выражений с символом bar |. Например, (a-z|0-9) будет соответствовать одному символу - любой из строчных букв или цифр.