08/03/24 08:06:16 gGfErR5e0
"foobarbaz" の "bar" だけ残そうと思って
Match = "foo(^(^bar))baz"
Replace = ""
とやっても、決してマッチしないのがお分かり頂けるかと思う。
ダブルネガティブ表現 "(^(^...))" は「"..." を置換せずにおく」という意味の表現ではない。
あくまで位置指定子なのである。
検索表現 "foo(^(^bar))baz" の、"foo" を (1)、"(^(^bar))" を (2)、"baz" を (3) とすると、
foo|barbaz (<部分表現 (1) がマッチしたぞ。どれどれ、更に部分表現 (2) を試してみるか…)
foo|barbaz (<ここから先 "bar" が続いてる!(2) もマッチした!次は (3) を試すぞ!)
foo|barbaz (<…って、後続文字列が "bar" なんだから、(3) がマッチするわけないじゃん…)
foob|arbaz (<結局全体としてマッチしなかったね。とっとと次行こう、次)
foobarbaz| (<どんどん行くよ~)