正则表达式 - 尝试匹配/ \ |或换行符,错误表示无效的转义字符

时间:2015-03-19 21:18:34

标签: java regex escaping string-matching

我实际上试图在以下任何一个上分割字符串:

  • /
  • \
  • |
  • \ n

这是我正在使用的正则表达式,它提供了无效的转义字符'错误:

String delims = "[\\\\\|\\/\\n,]+"; 
String[] list1 = str1.split(delims);

我已经尝试了几个版本,试图获得正确的数量。什么是正确的方法?

2 个答案:

答案 0 :(得分:1)

"[/\\|\n,\\\\]+"

其中一些你需要双重逃避

/ matches /
\\| matches |
\n matches new line
, matches ,
\\\\ matches \

答案 1 :(得分:1)

要在regex引擎中创建\字面值,您需要在字符串中使用四个\来编写它,因此您有一个\额外

"[\\\\\|\\/\\n,]+"; 
  1234^ 
      here

此外,您不需要在Java正则表达式引擎中转义/,也不需要将\n作为\\n传递(\n字面值也是接受)你可以试试

String delims = "[\\\\|/\n,]+";