0

文字列が次の式と一致するかどうかをチェックする正規表現を C++ プログラムに記述したいと考えています。

「_」を含まない単語ですが、数字の後に続く単語を含むことができます

'_' に続く

連続した 3 桁 (つまり 047)

続いて「_」

文字列 (何でも含むことができます)

次の式を試してみましたが、上記のように目的の文字列が見つかるようです。問題は最初の部分にあると思われますが、適切に変更するためにそれを検出できません。

static const wregex stringForm("([^_]?)_?(\\d{3})_(.+)");  

それでは、適切なreg表現は何ですか?

4

2 に答える 2

2
\b[^_]*?(_\d{3}.+?)?\b

単語 (\b単語の境界であり、量指定子は貪欲ではありません)。_ ( ) 以外の 0 個以上の文字[^_]*?。オプションで ( (...)?)、説明した数字シーケンス ( _\d{3}) の後に 1 つ以上の任意の文字 ( .+?) が続きます。

于 2012-07-24T12:41:10.850 に答える
0

これを試しましたか:

static const wregex stringForm("([a-zA-Z0-9]*_[0-9]{3}.*)"); 
于 2012-07-24T12:39:19.677 に答える