2017-11-02 6 views
-2

関数が3つのパラメータで呼び出され、最後のパラメータに特定の値がある場合、regexを使用してすべての関数呼び出し(C++では重要ではない)を検索します。正規表現を使用してregextest(dontcare、dontcare、true)と一致させる

私はすべてがそれは3つのパラメータで呼び出される場合regextestするために呼び出すと三番目のパラメータが「本当」であるために検索したい例えば

regextest(aaa,bbb,true) : OK 
regextest(aaa,ccc,false) : NOK, third parameter is not 'true' 
regextest(aaa,bbb,true,false) : NOK four parameters are used 
+1

詳細情報が必要です。カンマが関数の呼び出し内で引数のセパレータとしてのみ使用されることは確実ですか?あるいは、 'regextest(foo、" bar、baz "、bam)'のように引数の一部になる可能性がありますか? –

+0

パラメータセパレータとしての役割以外にコンマが表示されていない場合は、次のパターンを試してください: '\([^、] +、[^、] +、\ s * false \ s * \)' ... [ここ](https://regex101.com/r/fFjCnr/1)はうまくいくようです。 –

+0

この場合、カンマはセパレータとしてのみ表示されます – user5269247

答えて

1

パラメータはカンマ自分自身を含めることができない場合は、

を使用
regextest\([^(),]+,[^(),]+,true\) 

説明:

regextest\(# Match "regextest(" 
[^(),]+  # Match one or more characters except parens/commas 
,   # Match a comma 
[^(),]+  # (see above) 
,true\)  # Match ",true)" 

正規表現をマッチングするときに空白が重要であることに注意してください。trueの周りに空白がある可能性がある場合は、正規表現の最後の部分に,\s*true\s*)を使用する必要があります。

関連する問題