使用以下正则表达式捕获referer url的不同部分。我想捕获协议和域,并在差异场景中使用它。
Pattern pr=new Patters("^\w+://|[^\/:]+|[\w\W]*$");
但是eclipse正在给我和错误
Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )..
是正则表达式的新手。任何人都可以帮我吗?
答案 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”。 请记住,只要您期望结果中使用单斜杠(“\”),就会在代码中使用双斜杠(“\\”)。