2014-09-06 50 views
1

我有一个我想匹配的模式,但编译器说这是不正确的。我应该如何纠正在java中的scape序列?转义序列不正确

这是一种模式:

String patter = "\/\/s.ytimg.com\/yts\/jsbin\/html5player-en_US-vfllxLx6Z\/html5player.js" 
+0

你确定你需要''''之前'/'('/'在字符串或正则表达式中不是特殊的)吗? – Pshemo 2014-09-06 18:33:32

+0

是的,因为我正在寻找的模式是以这种方式构建的。 – usercode2014 2014-09-06 18:39:35

+0

在这种情况下,下面的每个答案都有正确的解决方案,因此当您的问题至少有15分钟时间时,请随时[接受](http://meta.stackexchange.com/a/5235/186652) (选择你最喜欢的一个)。 – Pshemo 2014-09-06 18:44:02

回答

0

在任何情况下使用\,它需要被复制,因为\被用来逃跑的特殊序列,例如\n创建一个换行符。 \\相当于实际url中的单个\

为您的实际网址,使用:

String patter = "\\/\\/s.ytimg.com\\/yts\\/jsbin\\/html5player-en_US-vfllxLx6Z\\/html5player.js" 

但是,如果你试图逃跑的/人物,那是不必要的。你可以用这个:

String patter = "//s.ytimg.com/yts/jsbin/html5player-en_US-vfllxLx6Z/html5player.js" 
1

编译器会抱怨,因为没有这样的转义字符如\/。常见的转义字符有这些:

  • \n换行符
  • \t标签
  • ...

要在字符串中嵌入文字\,你需要使用\\,例如:

String pattern = "\\/\\/s.ytimg.com\\/yts\\/jsbin\\/html5player-en_US-vfllxLx6Z\\/html5player.js"; 

但实际上,真的明白你为什么需要\。我觉得你真的需要什么是最有可能没有\可言:

String pattern = "//s.ytimg.com/yts/jsbin/html5player-en_US-vfllxLx6Z/html5player.js"; 
0

如果你想逃避\那么你需要使它像一倍\\。你可以试试这个:

String patter = "\\/\\/s.ytimg.com\\/yts\\/jsbin\\/html5player-en_US-vfllxLx6Z\\/html5player.js";