RegEx を作成して、変数宣言ステートメントからすべての変数値とその名前を取得したいと考えています。私が持っていると言う
整数 i、k = 10、l=0
int\s^,?|(^,?)* のような正規表現を書きたいのですが、これは k = 10 も受け入れます。に 、
私はcsv値を抽出することを知っていますが、ここでは私の文字列にもいくつかの初期値があります. どうすれば解決できますか?
RegEx を作成して、変数宣言ステートメントからすべての変数値とその名前を取得したいと考えています。私が持っていると言う
整数 i、k = 10、l=0
int\s^,?|(^,?)* のような正規表現を書きたいのですが、これは k = 10 も受け入れます。に 、
私はcsv値を抽出することを知っていますが、ここでは私の文字列にもいくつかの初期値があります. どうすれば解決できますか?
定義の構造について考え始めます。たとえば、
(a line can start with some spaces) followed by,
(Type) followed by
(at least one space)
(variable_1)
(optionally
(comma // next var
|
'='number // initialization
) ...`
次に、各グループの変換を試みます。
^ \s* \w+ \s+ \w+ ? (',' | '=' \d+ ) ...
line some type at least var optionally more or init some
start spaces (some chars) one space (some chars) vars val digits
スペースを削除し、最終的な正規表現を修正する宿題として残しました。
ここにあなたが使うことができるいくつかの有用な情報があります
これを試して:
^(int|[sS]tring)\s+\w+\s*(=\s*[^,]+)?(,\s*\w+\s*(=\s*[^,]+)?)*$
サンプルコードと一致します
int i,k = 10,l=0
また、使用している言語と使用していない言語についていくつか仮定すると、次のように一致します。
int i, j, k=10, l=0
string i=23, j, k=10, l=0
[C# Grammar]( http://msdn.microsoft.com/en-us/library/aa664812(VS.71).aspx)から正規表現を作成できます。しかし、パーサーを構築する方が確実に優れています。