Моя цель - заменить все экземпляры трейлинга на трейлинг + в скобках тега.Предположим, что строка, которая должна быть заменена, выглядит следующим образом:
<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>
Это, конечно, также заменит скобки вне тегов.
Так что же такоепроблема с моим первым выражением, и как мне достичь цели полной замены в скобках тега?