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'))");