Ответ 1
Каждая пара круглых скобок (
... )
, где первый символ не является ?
*, является "группой захвата", которая помещает его результат в $1
, $2
, $3
, и т.д., которые могут использоваться в шаблоне замены.
Вы также можете видеть то же самое, что и \1
, \2
, \3
в других машинах с регулярными выражениями (или даже в оригинальном выражении иногда для повторения)
Они называются "обратные ссылки", поскольку они обычно ссылаются на (более раннюю) часть выражения.
(* ?
указывает различные формы специального поведения, в том числе не захватывающую группу, которая (?:
... )
и просто группы без захвата.)
В вашем конкретном примере $1 будет представлять собой группу (^| )
, которая является "позицией начала строки (нулевой ширины) или символом пробела".
Итак, заменив это выражение на все это, вы в основном удаляете переменную theClass
и потенциально пространство после нее. (Закрывающее выражение ( |$)
- это обратное - пробел или конечная позиция строки - и поскольку его значение не используется, возможно, оно не было захвачено с помощью (?: |$)
.)
Надеюсь, это все объясняет - дайте мне знать, хотите ли вы больше информации.
Кроме того, здесь некоторое дальнейшее чтение с сайта regular-expressions.info:
- Группы и обратные ссылки
- Атомная группировка (не работает в JS, но интересна)
- Группы поиска (частичная поддержка в регулярном выражении JS)