1

私が理解したいことは、括弧内の私の表現です。私はそのような正規表現を作成します -

public static final String complexValue = "([-]?[(].+[)])"

しかし、私はそのような入力文字列で失敗しました -

String st = "(4+6)+(3)"

そのような regExpを作成する方法はありますか、その文字列は(5+x)それに一致し、文字列(4+6)+(3)はありません。

4

2 に答える 2

2

文字通りの答えはイエスです:"^\\(5\\+x\\)$"あなたが求めたことはしますが、あなたが望むことはしません。

問題は、あなたが何を望んでいるのかがはっきりしないことです((4)+(6)):それは一致する必要がありますか? 括弧の潜在的に無限のネストを許可しますか、それとも内側の括弧を許可せずに外側の括弧のペアのみを許可しますか?

最初のケースでは、文法が不規則であるため、正規表現はそれを解析できません。(「不規則な正規表現」方言があることを思い出すようですが、IIRC Java 実装はその中にありません)。

2番目のケースでは、次のようなもの"^\\([^)]+\\)$"が機能します。

于 2013-01-13T14:59:01.027 に答える
0

では、括弧で囲まれた 2 つの数値の加算を一致させたいですか? 次に、以下が機能するはずです。

^\(\-?\d+\+\-?\d+\)$
于 2013-01-13T14:56:02.377 に答える