2012-02-27 14 views
1

数学関数を表す文字列がたくさんあります(ネストされ、任意の数の引数があります)。正規表現を使用できるようにしたい文字列の配列を返します。各文字列は、最も外側の関数の引数です。私はこのケースでは、文字列である、私は何とかf1のすべての引数の配列を取得するために使用できる正規表現パターンを望むJava Regex - regexを使って "関数"引数の配列を取得しようとしています

"f1(f2(x),f3(f4(f5(x,y,z))),f(f(1)))" 

「F2(X)」、「F3(:ここでは例ですf4(f5(x、y、z)))」と「f(f(1))」となる。入力文字列にスペースはありません。

大変ありがとうございます。

答えて

4

これは正規表現だけではできないと思います。

これはおそらく、バランスのとれた括弧を識別することができることが必要となる - 私たちはf1(f2(x)を解析されてきた後は、たとえば、次の文字は)または,可能性のいずれか - それは缶」何かの標準的な例ですtは正規表現で行う必要がありますが、より洗練されたパーサーが必要です。

+0

ダング、本当ですか?これは大まかになるでしょう。これに近い何かをしているJavaユーティリティを知っていますか? – Tim

+0

nevermind。私が間違っている。 –

+0

これは一般的にregexpでは不可能な理由は、regexpにはメモリがないことです。ネストされたアイテムにマッチさせる一般的な方法はありません。それは上記のf3(...)コンストラクトの場合です。 –

関連する問題