2

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

所以我的代码是这样的:

string.split(";");

但是,在字符串里面我有很多 escaped \;。我想要一个不会拆分\;但只会拆分的正则表达式;

字符串示例:

sometexthere\;shhshshshhs;shhshshshshs\;dddddd;

预期结果:

[0] sometexthere\;shhshshshhs;
[1] shhshshshshs\;dddddd;

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

4

2 回答 2

5

尝试这个:

str.split("(?<!\\\\);");

编辑

如果您确实想;在结果数组中使用拆分器():

str.split("(?<=[^\\\\];)");

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

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

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

它输出:

[sometexthere\;shhshshshhs;, shhshshshshs\;dddddd;]
于 2013-08-29T12:59:46.583 回答
2

split("(?<=(?<!\\\\);)")如果您不想删除;但只是在它之后拆分,请尝试使用。我们在这里使用双重后视机制

  • 积极的回顾(?<=...)
  • 消极的回顾(?<!...)

(?<=;)会找到;之前有的地方,但我们还必须确保之前;没有的地方\,所以我们可以把它写成(?<=(?<!\\\\);).

于 2013-08-29T13:06:48.583 回答