数値XML属性に定数値を追加します


2

バックグラウンド

vim(gvim)を使用して、正規表現と一致する数値に定数値を追加します。

問題

次の正規表現が一致しwidth="32"ます:

/width="\([0-9]\{2\}\)"

質問

width属性の数値を、属性の値を使用する数式の結果に置き換えるにはどうすればよいですか?たとえば、次のグローバル置換を実行したいと思います。

:%s/width="\([0-9]\{2\}\)"/width="\1+10"/g

それはwidth="42"for width="32"width="105"for を生成しwidth="95"ます。

ありがとうございました!

回答:


4

置換で式の評価を行うには、次を参照してください。

:help :s\=
:help submatch()

例えば:

:%s/width="\([0-9]\{2\}\)"/\='width="'.(submatch(1)+10).'"'/g

式の置換を行う場合、置換全体が式である必要があるため、式:help expr-.の3つの要素を連結する必要があります(を参照)。分解:

  • \=

置換パターンが式であることを示します。

  • 'width="'

最初の文字列。

  • (submatch(1) + 10)

最初のsub-pattern-matchに10を追加します-括弧で囲まれているため、Vimは追加操作に先行する文字列を含めようとしません。

  • '"'

文字列としての閉じ引用。

(内訳には連結演算子は含まれていません。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.