Java正则表达式:匹配一个字符,除非前面有另一个字符

Java正则表达式:匹配一个字符,除非前面有另一个字符,java,regex,Java,Regex,我正在尝试使用String.Split来拆分查询,在这种情况下是一个HiveQL查询 我的情况是我想分开;但在以下情况除外:;前面有一个\。 我的问题是: String.Split(";") 这还不够 String.Split("[^\\\\];") i、 e不是一个\后跟一个;应用于 select table; count table; 将为组提供select tabl、count tabl,因此我将丢失;之前的字符 有什么解决办法吗 您需要一个: String.Split("(?

我正在尝试使用String.Split来拆分查询,在这种情况下是一个HiveQL查询

我的情况是我想分开;但在以下情况除外:;前面有一个\。 我的问题是:

String.Split(";") 
这还不够

String.Split("[^\\\\];") 
i、 e不是一个\后跟一个;应用于

select table; count table; 
将为组提供select tabl、count tabl,因此我将丢失;之前的字符

有什么解决办法吗

您需要一个:

String.Split("(?<![\\\\]);");

这是一个。

由于这是一个单字符匹配,因此不需要方括号当一行中可能有多个转义字符时,split不是解决方案。