This question already has answers here:
How to split a comma separated String while ignoring escaped commas?
                                
                                    (4个答案)
                                
                        
                2年前关闭。
            
        

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方法匹配";"但不匹配"\;"的方法。
换句话说,仅在分号(;)前面没有“ \”的情况下才进行拆分。

我已经考虑过使用正则表达式,但是在使用它时我完全不知所措。
任何帮助将非常感激。
谢谢!

最佳答案

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

例如,

(?<!a)b


使用负向后搜索匹配不以“ a”开头的“ b”。

尝试对此进行拆分:

(?<!\\);


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

09-10 07:31
查看更多