Java使用正则表达式拆分复杂字符串
我有以下字符串:Java使用正则表达式拆分复杂字符串,java,regex,string,split,Java,Regex,String,Split,我有以下字符串: field 'data' OR field2 'data2 complex' AND (field3 'data3' OR field3 'data4') 我需要把它分成一个表格: [field, data, OR, field2, data2 complex, AND, (, field3, data3, OR field3, data4, )] 可以用正则表达式来做吗?请帮我写一个正确的答案来解决这个问题。非常感谢如果我正确阅读了您的要求,您需要“单引号分隔的序列”或括
field 'data' OR field2 'data2 complex' AND (field3 'data3' OR field3 'data4')
我需要把它分成一个表格:
[field,
data,
OR,
field2,
data2 complex,
AND,
(,
field3,
data3,
OR
field3,
data4,
)]
可以用正则表达式来做吗?请帮我写一个正确的答案来解决这个问题。非常感谢如果我正确阅读了您的要求,您需要“单引号分隔的序列”或括号或字母数字单词 因此,您可以(将global设置为true,以便一次标记一个): [注意:这个简单的正则表达式不能解释字符串中的嵌套或转义单引号,使用正则表达式可以正确地实现这一点,但要复杂得多。] 如果您希望进行单个匹配,然后访问匹配组以获取数据,请执行以下操作:
您也可以使用此正则表达式:
String[] list = s.split("'|(\\b(?![^']*?\\w'))");
输出为:
[field、、data、、或、、field2、、data2 complex、、和(、field3、、data3、、或、、field3、、data4、)]
仅当下一个“
是开头撇号而不是结尾撇号时(因为那样你就在里面),才可以在单词边界(\\b
)拆分
我试图在不弄乱正则表达式的情况下清理空的空间,但我找不到方法(我对正则表达式是新手)。因此,如果可以的话,欢迎您编辑它。除了在空格上拆分外,您什么都不做…?您能解释一下吗?原始字符串是什么?您希望它除以什么?@swaver2112不,它没有在空格上拆分此
regex
似乎捕捉到:-但不能说split
/(?:('[^']*?'|\w+|[\(\)])\s*)+/
String[] list = s.split("'|(\\b(?![^']*?\\w'))");