0

次の行を解析する必要があります。

Action(X,X,Cash(50))Action(Y,Y,Material(30,Car,2))Action(I,I,Cash(50))

出力は次のようになります。

Action(X,X,Cash(50))
Action(Y,Y,Material(30,Car,2))
Action(I,I,Cash(50))

私が使用した正規表現は次のとおりです。

String tokenRegex = "(Action+\\(([a-zA-Z]+|\\,|([a-zA-Z]+\\(\\d*|[a-zA-Z]+|\\,)\\))+\\))";

「Action(Y,Y,Material(30,Car,2))」の解析に失敗しますが、「Action(X,X,Cash(50))」では機能します。私は何を間違っていますか。正しい正規表現は何でしょうか?

4

2 に答える 2

1

正規表現を使用する代わりに、

string.replace(")A", ")\nA");
于 2013-04-05T00:36:52.167 に答える
1

私はこれがそれを行うと思います:

String tokenRegex = "(Action\\([a-zA-Z]+,[a-zA-Z]+,[a-zA-Z]+\\(\\d+(,([a-zA-Z]+|\\d+))*\\)\\))";

正規表現でのグループ化に不要な括弧をいくつか削除しました。式の一部をキャプチャするためにそれらが必要な場合は、それらを追加し直す必要があります。

于 2013-04-05T00:50:20.050 に答える