从Referer获取域名的正则表达式

时间:2012-02-04 10:55:53

标签: regex

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

Pattern pr=new Patters("^\w+://|[^\/:]+|[\w\W]*$");

但是eclipse正在给我和错误

Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )..

是正则表达式的新手。任何人都可以帮我吗?

2 个答案:

答案 0 :(得分:3)

您为Pattern构造函数提供了一个字符串,因此您需要转义反斜杠。

e.g:

Pattern pr = new Pattern("^\\w+://|[^/:]+|[\\w\\W]*$");

您的正则表达式可能未完成 - 您需要使用括号“对”方案和域部分进行“分组”:

Pattern pr = new Pattern("^(\\w+)://([^/:]+)");

我在下一次冒号或斜线后忽略了所有内容 - 你说你只想要这个方案和域名。

答案 1 :(得分:0)

正则表达式使用“\”(例如,\ w,\ W,\ d,\ D)作为定义正则表达式语法的起始字符。 Java也使用“\”。 Java还允许通过添加额外的“\”来使用“\”,因此在代码中最终会出现“\\”,这将逃避其他反斜杠。

如果您的解决方案不符合预期,请尝试使用“regexpal.com”。 请记住,只要您期望结果中使用单斜杠(“\”),就会在代码中使用双斜杠(“\\”)。