java – 使用正则表达式拆分字符串

我需要在有逗号的地方拆分一个字符串,但这取决于逗号的放置位置。

举个例子

考虑以下:

C=75,user_is_active(A,B),user_is_using_app(A,B),D=78 

我希望String.split()函数将它们分开,如下所示:

 C=75 user_is_active(A,B) user_using_app(A,B) D=78 

我只能想到一件事,但我不确定它是如何在正则表达式中表达的。

括号内的字符/单词总是大写的。 换句话说,我不会user_is_active(a,b)

有没有办法做到这一点?

如果您没有多个括号级别,则可以在开头之前对逗号进行拆分(后面没有结束) (

 String[] splitArray = subjectString.split( "(?x), # Verbose regex: Match a comma\n" + "(?! # unless it's followed by...\n" + " [^(]* # any number of characters except (\n" + " \\) # and a )\n" + ") # end of lookahead assertion"); 

您提议的规则将翻译为

 String[] splitArray = subjectString.split( "(?x), # Verbose regex: Match a comma\n" + "(? 

但是你会错过像文本一样的分裂

 Org=NASA,Craft=Shuttle 

考虑使用解析器生成器来解析这种查询。 例如: javacc或antlr

作为替代方案,如果您需要多个括号级别,则可以创建一个小字符串解析器来逐字符解析字符串。