Что джентльмен подразумевает под 1 долларом, это «стоимость первой группы захвата». Когда вы заключаете часть вашего регулярного выражения в скобки, он определяет группы захвата. Вы считаете их слева направо. Каждая открывающая скобка начинает новую группу захвата. Они могут быть вложенными.
(Существуют способы определения подвыражений без определения групп захвата - я забыл синтаксис.)
В Perl $ 1 - это магическая переменная, содержащая строку, совпадающую с первой группой захвата, $ 2 - строка, совпадающая со второй, и т. Д. В других языках может потребоваться вызвать метод для возвращенного объекта соответствия, чтобы получить N-ное группа захвата.
Но вернемся к решению Мольфа. Предположим, он сказал использовать вместо этого шаблон:
/<script[^>]+id="JSBALLOONS">(.*)<\/script>/
В этом случае, если у вас есть более одного элемента сценария, этот неправильный шаблон поглотит их все, потому что он жадный, и этот момент стоит объяснить. Этот шаблон будет начинаться с первого открывающего тега, совпадать с его закрывающим тегом, продолжать движение и, наконец, соответствовать последнему. Магия в решении Мольфа - вопросительный знак в (. *?), Который делает его не жадным. Он вернет самую короткую строку, которая соответствует шаблону, следовательно, не поглотит лишние элементы скрипта.