私はいくつかのキャプチャグループを持つ非常に複雑な正規表現を持っています
ただし、このグループはより大きなグループにあり、このより大きなグループはオプションです
ここで状況を見てください(私はそのためにQtとQRegularExpressionを使用していますが、それは実際には問題ではないと思います):
QRegularExpression regex("(.*)(?:([0-9]{2}) ([0-9]{2}) ([0-9]{2}))?(.*)");
今、私はマッチを交換したい
QString str = ".....some text....";
str.replace(regex, "\\1__\\3__\\5");
3 つのキャプチャ グループはオプションであるため、\\3
存在しない場合があるため、現在問題があります。
私が望むのは、キャプチャグループの1つが存在しない場合に空の文字列を取得することです:
存在する場合\\3
、私は欲しい:
"\\1__\\3__\\5"
しかし、そうでない場合、私は欲しい:
"\\1____\\5"
存在しない場合は次のようになります。
"...text...__\3__...text..."
私は明らかに2つ以上の正規表現/置換でそれを行うことができ、その間の存在をテストします
しかし、1回の置換でそれを行うことは可能ですか? そしてどうやって ?そして、それを行う最良の方法は何ですか?
編集
amartel が示すように、まったく問題はありません。実際、私の間違いは、8 番目のキャプチャーにアクセスしようとしたことですが、7 しかなかったので、\\8 return me \8