我需要拆分字符串
(年龄为25 ::或::姓氏,是-QA6):: AND::(年龄为20 ::或:: FIRST_NAME,包含测试)
成
string [0] =(age-is-25 :: OR :: last_name-is-qa6)
string [1] = AND
string [2] =(age-is-20 :: OR :: first_name-contains-test)
我尝试编写这么多正则表达式,但没有任何方法可以正常工作.
使用以下正则表达式,Matcher.groupCount()返回2但将结果赋给arraylist返回null作为元素.
模式模式= Pattern.compile("(\\)::)?|(:: \\()?");
我尝试使用)::或:: :(拆分它.
我知道正则表达式看起来太愚蠢,但作为初学者,这是我能写的最好的.
dac*_*cwe 35
您可以使用正向前瞻和后瞻来匹配第一个和最后一个括号.
String str = "(age-is-25::OR::last_name-is-qa6)::AND::(age-is-20::OR::first_name-contains-test)";
for (String s : str.split("(?<=\\))::|::(?=\\()"))
System.out.println(s);
Run Code Online (Sandbox Code Playgroud)
输出:
(age-is-25::OR::last_name-is-qa6)
AND
(age-is-20::OR::first_name-contains-test)
Run Code Online (Sandbox Code Playgroud)
但是请注意:看起来你正在解析某种递归语言.正则表达式不擅长这样做.如果您正在进行高级解析,我建议您查看其他解析方法.
| 归档时间: |
|
| 查看次数: |
790 次 |
| 最近记录: |