Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于从Referer获取域名的Regex_Regex - Fatal编程技术网

用于从Referer获取域名的Regex

用于从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还不熟悉。有人能帮我吗?您正在向模式构造函数提供一个字符串,因此需要避开反斜杠

我使用下面的正则表达式来捕获referer url的不同部分。我想捕获协议和域,并在不同的场景中使用它

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+)://([^/:]+)");