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

kku*_*udi 7 java regex string split

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

举个例子

考虑以下:

C=75,user_is_active(A,B),user_is_using_app(A,B),D=78
Run Code Online (Sandbox Code Playgroud)

我希望String.split()函数将它们分开:

C=75 

user_is_active(A,B) 

user_using_app(A,B)

D=78
Run Code Online (Sandbox Code Playgroud)

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

括号内的字符/单词总是大写的.换句话说,我不会有这样的情况user_is_active(a,b).

有办法做到这一点吗?

Tim*_*ker 12

如果您没有多个括号级别,则可以对逗号进行拆分,而不是)在打开之前关闭的逗号(:

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");
Run Code Online (Sandbox Code Playgroud)

您提议的规则将翻译为

String[] splitArray = subjectString.split(
    "(?x),        # Verbose regex: Match a comma\n" +
    "(?<!\\p{Lu}) # unless it's preceded by an uppercase letter\n" +
    "(?!\\p{Lu})  # or followed by an uppercase letter");
Run Code Online (Sandbox Code Playgroud)

但是你会错过文本中的分裂

Org=NASA,Craft=Shuttle
Run Code Online (Sandbox Code Playgroud)