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