Мое регулярное выражение похоже на (a=)true|(b=)true
(это простая версия, а настоящая сложнее)
Предположим, что текст
a=true
b=true
Тогда я знаю, что a=
или b=
всегда \1
(или $1
)
Но что, если текст похож на
a=true b=true
Я считаю, a=
это \1
, b=
это \2
.
Как сказал @PushpeshKumarRajwanshi, приведенное ниже утверждение неверно. Я вычеркнул их
Если текст
b=true a=true
Тогда b=
равно \1
, a=
равно \2
.
Меня беспокоит, если индекс не стабилен, зависит от порядка появления.
Как объяснить этот результат? Было бы здорово, если бы кто-нибудь смог перенаправить меня на официальный документ. Заранее спасибо.
UPDATE:
- Если шаблон только
(a=)true
, (a=)
всегда будет \1
.
- Если шаблон только
(b=)true
, (b=)
всегда будет \1
.
- (На мой взгляд) узоры с обеих сторон вертикальной черты (символ трубы) параллельны.
Исходя из 3 приведенных выше утверждений, я ожидаю, что в паттерне (a=)true|(b=)true
либо (a=)
, либо (b=)
все равно будет \1
Так что я мог бы использовать один индекс для ссылки на них обоих, например, подстановку, s/(a=)true|(b=)true/\1false/g
. Но дело не в том, что я ожидаю.
Если изменить шаблон на (a=|b=)true
, то я всегда могу использовать \1
для ссылки на них.
Итак, мой вопрос, могу ли я использовать только один индекс для ссылки на группу захвата в шаблоне (a=)true|(b=)true
? или я должен изменить шаблон на (a=|b=)true
?