正则表达式匹配;但不是\;

时间:2017-08-23 12:31:18

标签: java regex split

MID4BNW2Uq-01;Standard Offline - Acc 01;SA\;BATE:GOOGN

我试图像分号一样在分号上拆分上述行: line.split(";", -1)

我需要的结果列表是:

1. MID4BNW2Uq-01
2. Standard Offline - Acc 01
3. SA\;BATE:GOOGN

但相反,由于";"内的SA\;BATE:GOOGN,我又得到了一个元素:

1. MID4BNW2Uq-01
2. Standard Offline - Acc 01
3. SA\
4. BATE:GOOGN

我正在寻找一种方法来使.split方法匹配";"但不是"\;"。 换句话说,只有在没有" \"的情况下才能拆分分号(;)就在它之前。

我已经考虑过使用正则表达式,但是当谈到它时我完全失败了。 任何帮助将非常感激。 谢谢!

1 个答案:

答案 0 :(得分:2)

您正在寻找的是一个名为“negative lookbehind”的零长度断言。

例如,

(?<!a)b

匹配“b”,前面没有“a”,使用负面的lookbehind。

尝试拆分:

(?<!\\);

反斜杠是正则表达式中的特殊字符,因此必须使用额外的反斜杠对其进行转义。

相关问题