java正则表达式,用于拆分遵循ABNF格式的字符串
我确实有一个遵循特定语法的字符串
字符串可以如下所示:
String query = query1 (param1,param2), query2, query3, query4 (param1);
没有可用的常用词。所有查询/参数可以是任何可能包含字符和数字的字符串
我们需要一个正则表达式来拆分此表单,它应该返回:
query1 (param1,param2)
query2
query3
query4 (param1)
目前我使用了这个regex "\\),"
类似:query.split ("\\),");
因此,它返回以下结果:
query1 (param1,param2
query2, query3, query4 (param1
我需要更正这个正则表达式吗?使用正则表达式拆分这种形式的字符串是否可行
# 1 楼答案
解决方案
您可以使用此正则表达式来实现所需的功能:
下面是一个进行匹配的代码片段:
解释
我们使用paranthesis创建一个捕获组,当它看到一个
,
或一个;
字符时,告诉它结束,但前提是它后面没有)
(这就是负前瞻的意义所在-(?!\w+?\))
)我们还希望删除前导空格,因此在捕获组之外添加了
\s?
部分