Java Regex仅排除某些字符
我有一套这样的urlJava Regex仅排除某些字符,java,regex,Java,Regex,我有一套这样的url www.abc.com/some-text/ www.xyz.com/some-text/ www.pqr.com/page/2/ 我需要获取URl,除了包含单词页面的URl 我的正则表达式是。*/。?!页面* 它不工作。有人能告诉我这个问题和解决方案吗?使用以下正则表达式。指定^$以确保页面后面没有字符 你的意思是除了你的问题还是期待你的问题 您可以通过前瞻选项忽略包含页面的URL 如果您想选择包含页面的URL,那么 /^(?=.*page).*/ 你为什么要找reg
www.abc.com/some-text/
www.xyz.com/some-text/
www.pqr.com/page/2/
我需要获取URl,除了包含单词页面的URl
我的正则表达式是。*/。?!页面*
它不工作。有人能告诉我这个问题和解决方案吗?使用以下正则表达式。指定^$以确保页面后面没有字符
你的意思是除了你的问题还是期待你的问题 您可以通过前瞻选项忽略包含页面的URL 如果您想选择包含页面的URL,那么
/^(?=.*page).*/
你为什么要找regex?这可以使用String.containsString来完成 您可以使用正则表达式:
(^(?:.(?!\bpage\b))+$)
检查
代码:
String regex="(^(?:.(?!\\bpage\\b))+$)";
String lines[]={
"www.abc.com/some-text/",
"www.xyz.com/some-text/",
"www.pqr.com/page/2/"
};
for(String line:lines){
if(line.matches(regex)){
System.out.println(line);
}
}
输出:
解释
使用URI:
这允许只在路径组件中搜索页面,如果在主机名/查询字符串/片段部分中出现,则不会被愚弄。如果页面出现在路径以外的其他位置,该怎么办?例如,foo.bar/baz?page=4?无需使用Stringmatches指定“^”和$anchors,它已经在整个输入字符串上匹配了。不过,这并没有使正则表达式出错,只是有点多余:@sp00m,你是对的。谢谢你的评论。我将把答案留给其他不涉及String.matches的用例。
/^(?=.*page).*/
String string ="www.pqr.com/page/2/";
if(string.contains("page")){
//true
}
(^(?:.(?!\bpage\b))+$)
String regex="(^(?:.(?!\\bpage\\b))+$)";
String lines[]={
"www.abc.com/some-text/",
"www.xyz.com/some-text/",
"www.pqr.com/page/2/"
};
for(String line:lines){
if(line.matches(regex)){
System.out.println(line);
}
}
www.abc.com/some-text/
www.xyz.com/some-text/
public boolean containsPage(final String input)
{
return URI.create(input).getPath().contains("page");
}