我有一些代码可以在textarea中获取一个url。在我尝试使用'+'
的网址之前,它一直运行良好。
Pattern pattern = Pattern.compile("(.*)(https?[://.0-9-?a-z=_#!A-Z]*)(.*)");
Matcher matcher = pattern.matcher(text);
所以我尝试在我的代码中放置\\+
和\\\\+
,但它不起作用。所以我做了一些谷歌搜索和堆栈溢出问题,一直提到这个人
Pattern.quote("+");
但是,我不确定如何将该声明应用到我现在拥有的内容中。如果那是我想去的方式。但我假设我需要做这样的事情......
String quote = Pattern.quote("+");
Pattern pattern = Pattern.compile("(.*)(https?[://.0-9-?a-z=_#!A-Z]*)(.*)");
Matcher matcher = pattern.matcher(text);
然后在模式中的某处添加变量引用?请帮忙!我今天刚刚学会了这些东西我是新手!谢谢?
答案 0 :(得分:3)
使用\
,示例
Pattern pattern = Pattern.compile("(.*)(https?[://.0-9-?a-z=_#!A-Z\"]*)(.*)");
答案 1 :(得分:1)
(https?[://.0-9-?a-z=_#!A-Z]*)
请记住,[
和]
表示一类字符,这意味着其中的任何字符都将被包含在内。 [aegl]+
将匹配“age”,“a”,“e”,g“,”eagle“和”gaggle“。这也意味着列出两次的字符(如/
)完全是多余的
Pattern.quote很有用,但只返回带有任何特殊字符前面的反斜杠的相同字符串。 Pattern.quote("+")
将返回\+
。
由于+
在方括号之间没有任何意义,因此您应该能够将+
未转义为方括号内。此时,如果它让您感觉更好,也可以添加\\
。
Pattern pattern = Pattern.compile("(.*)(https?[:/.0-9-?a-z=_#!A-Z+]*)(.*)");
Pattern pattern = Pattern.compile("(.*)(https?[:/.0-9-?a-z=_#!A-Z\\+]*)(.*)");
请在此处查看:http://fiddle.re/0780