0

これが私の入力です:

xxx999xxx888xxx777xxx666yyy

xxx222xxx333xxx444xxx555yyy

これは次の式です。

xxx.*xxx(?<matchString>(.(?!xxx.*xxx))*?)xxx.*yyy

444を返します。

444と777の両方を返したいのですが、これではどこにも行けません。

私は持っています!左側の最も内側にのみ一致するように除外します(これは、ほとんどの場合、1つの結果のみを検索する場合に最適です)。ただし、この場合、最初の結果をスキップする理由に関連していると感じています。ここからどこへ行けばいいのかわからない。

私はここでテストしています:http: //regexlib.com/RETester.aspx(「SingleLine」と「ExplicitCapture」が有効になっている)

アドバイスをいただければ幸いです。

4

1 に答える 1

5

まず、現在のソリューションが機能しない理由を説明したいと思います。

SingleLineオプションを有効にしたので、.*マッチ999xxx888xxx777xxx666yyy\nxxx222xxx333、括弧内のパターン マッチ444、および残りの正規表現マッチxxx555yyy

したがって、両方を一致さ777せるには、オプション444を無効にSingleLineするか、次のようなものを使用できます。

xxx\d+xxx\d+xxx(?<matchString>\d+)xxx\d+yyy
于 2012-10-16T21:43:44.290 に答える