キャプチャしたグループのみを置き換えるにはどうすればいいですか? 質問する

キャプチャしたグループのみを置き換えるにはどうすればいいですか? 質問する

文字列の前後に HTML コードがあります:

name="some_text_0_some_text"

0を次のように置き換えたいと思います:!NEW_ID!

そこで、簡単な正規表現を作成しました:

.*name="\w+(\d+)\w+".*

しかし、キャプチャされたブロックのみを置き換える方法がわかりません。

($1) のようなキャプチャされた結果を他の文字列に置き換える方法はありますか?

結果は次のようになります:

name="some_text_!NEW_ID!_some_text"

ベストアンサー1

解決策としては、前後のテキストのキャプチャを追加することです。

str.replace(/(.*name="\w+)(\d+)(\w+".*)/, "$1!NEW_ID!$3")

説明

括弧は「グ​​ループ」を作成するために使用され、その後、 を使用した置換でアクセスできる 1 進数のインデックスが割り当てられます$

  • 最初の単語(\w+)はグループになっており、$1
  • 中央部分(\d+)は2番目のグループです(ただし、置換では無視されます)
  • 3番目のグループ(\w+".*)$3

したがって、 の置換文字列を指定すると"$1!new_ID!$3"、 と$1$3最初のグループと 3 番目のグループに自動的に置き換えられ、2 番目のグループを新しい文字列に置き換えて、周囲のテキストを維持できるようになります。

おすすめ記事