用于从Referer获取域名的Regex
我使用下面的正则表达式来捕获referer url的不同部分。我想捕获协议和域,并在不同的场景中使用它用于从Referer获取域名的Regex,regex,Regex,我使用下面的正则表达式来捕获referer url的不同部分。我想捕获协议和域,并在不同的场景中使用它 Pattern pr=new Patters("^\w+://|[^\/:]+|[\w\W]*$"); 但是eclipse给了我更多的信息和错误 Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ ).. 我对regex还不熟悉。有人能帮我吗?您正在向模式构造函数提供一个字符串,因此需要避开反斜杠
Pattern pr=new Patters("^\w+://|[^\/:]+|[\w\W]*$");
但是eclipse给了我更多的信息和错误
Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )..
我对regex还不熟悉。有人能帮我吗?您正在向
模式
构造函数提供一个字符串,因此需要避开反斜杠
e、 g:
您的regexp可能不完整-您需要用括号“分组”scheme和domain部分:
Pattern pr = new Pattern("^(\\w+)://([^/:]+)");
我忽略了下一个冒号或斜杠之后的所有内容-您说您只需要scheme和domain。Regex使用“\”(即\w\w\d\d)作为起始字符来定义Regex语法。Java也使用“\”。Java还允许通过添加一个额外的“\”来使用“\”,因此在代码中以“\”结束,这将跳过另一个反斜杠
以防您的解决方案不是您所期望的,请尝试使用“regexpal.com”。
请记住,每当您希望在结果中使用单斜杠(\”)时,请在代码中使用双斜杠(\”)。我遇到了一个问题,所以我决定使用regexps-现在我有两个问题…
[\w\w]*
将匹配任何内容,即使是空字符串。@M42在这种情况下实际上并不重要,因为他没有使用该字段。@Alnitak:对,但是他的模式将匹配任何字符串。你可以用正则表达式来实现这一点,但是使用java的类会更好。在那里,您可以执行以下操作:(新URI(referer)).getHost()
,然后就可以使用它了。
Pattern pr = new Pattern("^(\\w+)://([^/:]+)");