2

次の正規表現の場合:

(.*)in(.*)-in(.*)

および次の置換文字列:

$18888$29999$3

ウェブサイト RegexPlanet は、http: //fiddle.re/8ky3aごとに、私のキャプチャ グループ参照の一部をリテラルとして扱っているようです。

たとえば、入力では、3 番目のグループが (空の文字列に) 一致したが、最初の 2 つのグループは一致しなかったかのように、 の代わりにin-in生成されます。$18888$2999988889999

次の代替アプローチを試しましたが、成功しませんでした。

名前付きキャプチャ:

(?'name'...)       -- Captures, but can't be referenced
(?<name>...)       -- Generates error on site

参照アプローチ:

${n}               -- Where n is the capture group number
${name}

名前のないキャプチャと名前の付いたキャプチャの両方のアプローチを、些細なケースで機能させることができました

何が起こっているのですか?関連する点として、置換とマッチングをサポートする RegexPlanet の代替品をお勧めできますか?

4

2 に答える 2

2

RegexPlanet の .NET メカニズムは、ほとんどの場合、正常に動作しています。上記の置換文字列の問題は、番号付きグループ参照の後に数字を続けることができず、{}代わりに次のように囲む必要があることです。

${1}8888${2}9999$3

この作業フィドルに示すように。

名前付き参照も同様に機能しますが、 のみで(?'name'...)、 ではなく(?<name>...)、 で参照できます${name}。名前付き参照の問題は<>、HTML のコンテキストでの使用に関連するサイトのバグである可能性があります。

を使用した実際の例は、このイデオンの例(?<name>...)で見ることができます。

于 2013-08-03T20:43:26.110 に答える