前回の投稿でタグが一部剥がれてしまったので、もう一度。
私の目標は、末尾のすべてのインスタンスをタグブラケット内の末尾の + に置き換えることです。置き換えられる行が次のようになっているとします。
<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>.
もちろん、これはタグブラケットの外側でも代用されます。
では、最初の式の問題は何ですか? また、タグ ブラケット内で完全に置換するという目標を達成するにはどうすればよいでしょうか?