我需要在有逗号的位置拆分字符串,但这取决于逗号的放置位置。
作为一个例子
考虑以下事项:
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)
。
有办法吗?
答案 0 :(得分: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");
您建议的规则将翻译为
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");
然后你会错过像
这样的文本中的分割Org=NASA,Craft=Shuttle
答案 1 :(得分:0)
答案 2 :(得分:0)
作为替代方案,如果您需要多个括号级别,则可以创建一个小字符串解析器来逐字符解析字符串。