1

RegEx を作成して、変数宣言ステートメントからすべての変数値とその名前を取得したいと考えています。私が持っていると言う

整数 i、k = 10、l=0

int\s^,?|(^,?)* のような正規表現を書きたいのですが、これは k = 10 も受け入れます。に 、

私はcsv値を抽出することを知っていますが、ここでは私の文字列にもいくつかの初期値があります. どうすれば解決できますか?

4

4 に答える 4

3

定義の構造について考え始めます。たとえば、

(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

スペースを削除し、最終的な正規表現を修正する宿題として残しました。

于 2009-02-25T12:56:08.933 に答える
2

ここにあなたが使うことができるいくつかの有用な情報があります

http://compsci.ca/v3/viewtopic.php?t=6712

于 2011-03-22T08:59:38.257 に答える
0

これを試して:

 ^(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
于 2011-03-22T09:52:18.563 に答える
0

[C# Grammar]( http://msdn.microsoft.com/en-us/library/aa664812(VS.71).aspx)から正規表現を作成できます。しかし、パーサーを構築する方が確実に優れています。

于 2009-02-25T12:53:07.817 に答える