如何在正则表达式中"不"?

use*_*746 2 java regex split

我试图在Java中使用Split函数.我试图分裂的角色是;.

所以我的代码是这样的:

string.split(";");
Run Code Online (Sandbox Code Playgroud)

但是,在字符串里面我有很多逃脱\;.我想要一个不会分裂的正则表达式,\;但只能;在它自己的位置分开.

字符串示例:

sometexthere\;shhshshshhs;shhshshshshs\;dddddd;
Run Code Online (Sandbox Code Playgroud)

预期结果:

[0] sometexthere\;shhshshshhs;
[1] shhshshshshs\;dddddd;
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.谢谢!

Ken*_*ent 5

试试这个:

str.split("(?<!\\\\);");
Run Code Online (Sandbox Code Playgroud)

编辑

如果你想;在结果数组中有spliter(the ):

str.split("(?<=[^\\\\];)");
Run Code Online (Sandbox Code Playgroud)

请注意,单个后视就足以解决此问题.

这一次,我做了一个测试:

final String str = "sometexthere\\;shhshshshhs;shhshshshshs\\;dddddd;";
System.out.println(Arrays.toString(str.split("(?<=[^\\\\];)")));
Run Code Online (Sandbox Code Playgroud)

它输出:

[sometexthere\;shhshshshhs;, shhshshshshs\;dddddd;]
Run Code Online (Sandbox Code Playgroud)