Я работаю над problem 6 on regexone.com, и я не могу понять, как работает группировка с «изменением». Это тест строка:Regex - группа захвата с изменением классов символов
The quick brown fox...
и задача состоит в том, чтобы захватить The quick brown fox...
без дополнительных пробелов, которые можно сделать с ^\s*([\w\s.]*)\s*$
.
Но когда я пытаюсь это: ^\s*(\w|\s|\.)*\s*$
захватывает группа '.'
([27-28]) Почему? И поэтому ^\s*((\w|\s|\.)*)\s*$
захватывает две группы - The quick brown fox...
[6-28] и '.'
([27-28]).
Как работает группировка? Каковы различия в работе с изменениями и классами символов, кроме того, что классы символов соответствуют символам, тогда как изменение соответствует словам (мое основное понимание)?
P.S .: Как следует искать документацию, такую как информация о таких проблемах, когда я даже не знаю, что они называли?
Как этот процесс отличается для соответствия класса символов, я имею в виду [abc] * vs (a | b | c) *? – devautor
Когда у вас есть класс символов, он скомпилируется и проверяется за 1 проход. Когда у вас есть чередование, двигатель добавляет дополнительный уровень обратного отсчета, что усложняет задачу и делает код exectute намного медленнее. Сравните информацию об отладке для ['[abc] *'] (https://regex101.com/r/cQ4tF1/1) и ['(a | b | c) *'] (https://regex101.com/ r/cQ4tF1/2) - 3 против 15 шагов. –