序論として、私は正規表現で問題を解決することについての古いことわざを認識しており、正規表現で XML を処理する際の注意事項についても認識しています。でも、ちょっと我慢してください…
文字のグループで正規表現検索と置換を実行しようとしています。このグループがどのくらいの頻度で一致するかは事前にわかりませんが、特定のコンテキストのみで検索したいと考えています。
例: 次の文字列があり、 を検索して置換し"**ab**df**ab**sdf**ab**fdsa**ab**bb"
たい場合、次の正規表現を使用するとうまくいきます。"ab"
"@ab@"
検索正規表現:
(.*?)(ab)(.*?)
交換:
$1@$2@$3
予想通り、全部で 4 つのマッチが得られました。各一致内で、グループ ID は同じであるため、後方参照 ($1、$2 ...) も正常に機能します。
ただし、特定のコンテキストを文字列に追加すると、上記の正規表現は失敗します。
検索文字列:
<context>abdfabsdfabfdsaabbb</context>
検索正規表現:
<context>(.*?)(ab)(.*?)</context>
これにより、最初の一致のみが検索されます。しかし、元の正規表現に非キャプチャ グループを追加しても機能しません ( "<context>(?:(.*?)(ab)(.*?))*</context>"
)。
私が望むのは、最初の検索(コンテキストなし)のような一致のリストです。これにより、各一致内でグループ ID が同じになります。
これをどのように達成できるか考えていますか?