В моем предыдущем посте теги были частично удалены, поэтому снова здесь:
Моя цель - заменить все экземпляры трейлинга на трейлинг + в квадратных скобках. Предположим, что строка для замены выглядит следующим образом:
<h> aa- aa- </h> <h> ba- ba- </h>
и впоследствии должен выглядеть как
<h> aa+ aa+ </h> <h> ba+ ba+ </h>.
Сначала я попробовал это выражение:
s/<h>(.*?)-(.*?)<\/h>/<h>$1+$2<\/h>/g;
, который дал этот вывод:
<h> aa+ aa- </h> <h> ba+ ba- </h>.
Опция g приводит к более чем одной замене на строку, но только для первого экземпляра в скобках тега (и только если в обеих круглых скобках содержится знак вопроса).
Чтобы сузить проблему, я затем попытался добиться замены, не обращая внимания на теги. Выражение
s/(.*?)-(.*?)/$1+$2/g;
действительно приводит к желаемому результату
<h> aa+ aa+ </h> <h> ba+ ba+ </h>.
Это, конечно, заменит скобки за пределами тега.
Так в чем же проблема с моим первым выражением и как мне достичь цели полной замены в скобках тегов?