【发布时间】:2013-10-13 07:51:43
【问题描述】:
我正在寻找匹配 , 的正则表达式,但在 Java 的正则表达式引擎中忽略 \,。这很接近:
[^\\],
但是,它匹配前一个字符(除了逗号),这是行不通的。
也许正则表达式方法完全是错误的。我打算使用 String.split() 来解析一个带有转义逗号的简单 CSV 文件(不能使用外部库)。
【问题讨论】:
-
啊,绝对是重复的。抱歉,我在寻找解决方案时错过了它。
我正在寻找匹配 , 的正则表达式,但在 Java 的正则表达式引擎中忽略 \,。这很接近:
[^\\],
但是,它匹配前一个字符(除了逗号),这是行不通的。
也许正则表达式方法完全是错误的。我打算使用 String.split() 来解析一个带有转义逗号的简单 CSV 文件(不能使用外部库)。
【问题讨论】:
您需要negative look-behind assertion:
String[] arr = str.split("(?<![^\\\\]\\\\),");
请注意,您需要 4 个反斜杠。首先转义 Java 字符串文字的反斜杠。然后再次转义正则表达式的两个反斜杠。
【讨论】:
Split\\,this之类的字符串上失败。
Don't split\\\,this呢?