我有一个我想匹配的模式,但编译器说这是不正确的。我应该如何纠正在java中的scape序列?转义序列不正确
这是一种模式:
String patter = "\/\/s.ytimg.com\/yts\/jsbin\/html5player-en_US-vfllxLx6Z\/html5player.js"
我有一个我想匹配的模式,但编译器说这是不正确的。我应该如何纠正在java中的scape序列?转义序列不正确
这是一种模式:
String patter = "\/\/s.ytimg.com\/yts\/jsbin\/html5player-en_US-vfllxLx6Z\/html5player.js"
在任何情况下使用\
,它需要被复制,因为\
被用来逃跑的特殊序列,例如\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"
编译器会抱怨,因为没有这样的转义字符如\/
。常见的转义字符有这些:
\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";
如果你想逃避\
那么你需要使它像一倍\\
。你可以试试这个:
String patter = "\\/\\/s.ytimg.com\\/yts\\/jsbin\\/html5player-en_US-vfllxLx6Z\\/html5player.js";
你确定你需要''''之前'/'('/'在字符串或正则表达式中不是特殊的)吗? – Pshemo 2014-09-06 18:33:32
是的,因为我正在寻找的模式是以这种方式构建的。 – usercode2014 2014-09-06 18:39:35
在这种情况下,下面的每个答案都有正确的解决方案,因此当您的问题至少有15分钟时间时,请随时[接受](http://meta.stackexchange.com/a/5235/186652) (选择你最喜欢的一个)。 – Pshemo 2014-09-06 18:44:02