Подтвердить что ты не робот

Что означает $1, $2 и т.д. В регулярных выражениях?

Время и время снова я вижу, что в коде используются $1 и $2. Что это значит? Не могли бы вы привести примеры?

4b9b3361

Ответ 1

При создании регулярного выражения у вас есть возможность захвата частей матча и сохранения их в качестве заполнителей. Они нумеруются начиная с $1.

Например:

/A(\d+)B(\d+)C/

Это будет захватывать из A90B3C значения 90 и 3. Если вам нужно группировать вещи, но не хотите их захватывать, используйте (?:...) версию вместо (...).

Цифры начинаются слева направо в том порядке, в котором скобки открыты. Это означает:

/A((\d+)B)(\d+)C/

В соответствии с той же строкой будут записаны 90B, 90 и 3.

Ответ 2

Это особенно. полезно для Синтаксис строкой замены (т.е. Форматирование строк) Хорошо подходит для фраз для случаев и случаев для поиска и замещения. Чтобы ссылаться на захват, используйте $n, где n - номер регистра захвата. Использование $0 означает весь матч. Пример: Find: (<a.*?>)(.*?)(</a>) Replace: $1\u$2\e$3