Вход

Просмотр полной версии : Что означает выражение (?:x)


riva
04.08.2014, 22:48
Объясните на примере, что означает регулярное выражение (?:x)
Это взято из хелпа с этого форума и там написано следующее:
Находит x, но не запоминает найденное. Это называется "незапоминающие скобки". Найденная подстрока не сохраняется в массиве результатов и свойствах RegExp.Как и все скобки, объединяют находящееся в них в единый подпаттерн.

Aetae
04.08.2014, 23:00
alert( 'ababcdcd'.match(/(?:ab)+(cd)+/) )

ixth
04.08.2014, 23:04
Ты знаешь как работают скобки в регулярке, чуви? Так вот (?:) работает так же как скобки, но не создает дополнительную группу в результате. Т.е. /^\/request\/index(\.html)?/ => ['/request/index.html', '.html'], /^\/request\/index(?:\.html)?/ => ['/request/index.html'].

riva
04.08.2014, 23:22
Ты знаешь как работают скобки в регулярке, чуви?
Из всех Ваших слов, я вижу только ЧУВИ)))) Вот на ЧУВАК, я бы ещё промолчал,
но... Ахахаха, я даже не знаю, как сказать... Не говорите мне так больше, пожалуйста!

Но возвращаясь к теме, спасибо Вам обоим! Мне кажется, что теперь я и это выражение понял и заодно мне стало ясно, как формируется результативный массив. Вот когда возвращается массив с совпавшей строкой и ещё какими-то элементами, то эти элементы и есть ( группы )! А если применить это выражение, то в массиве этой группы не будет! Я правильно понял?

ixth
05.08.2014, 01:24
А если применить это выражение, то в массиве этой группы не будет!

Да, поэтому оно называется non-matching group. Группировка есть, в матч не попадает.

http://javascript.ru/forum/attachments/misc/2304d1407187322-chto-oznachaet-vyrazhenie-x-chewie-jpg