我已经这样设置的URL,正则表达式来仅排除某些字符
www.abc.com/some-text/
www.xyz.com/some-text/
www.pqr.com/page/2/
我需要获取URL预计包含单词的URL“页” 我的正则表达式是.*/(.(?!page)).*
它不是working.can人指出我的问题和解决方案?
我已经这样设置的URL,正则表达式来仅排除某些字符
www.abc.com/some-text/
www.xyz.com/some-text/
www.pqr.com/page/2/
我需要获取URL预计包含单词的URL“页” 我的正则表达式是.*/(.(?!page)).*
它不是working.can人指出我的问题和解决方案?
使用以下正则表达式。 (指定^
,$
以确保没有字符后跟page
)。
"^(.(?!\\bpage\\b))+$"
String pattern = "^(.(?!\\bpage\\b))+$";
System.out.println("www.abc.com/some-text/".matches(pattern)); // true
System.out.println("www.xyz.com/some-text/".matches(pattern)); // true
System.out.println("www.pqr.com/page/2/".matches(pattern)); // false
您是不是要找除了或者期待在您的问题?
您可以通过lookahead
选项忽略其中有page
的网址。
/^(?!.*page).*/
如果你想挑它有网页网址,然后
/^(?=.*page).*/
你为什么要找的正则表达式?这可以通过使用String.contains(String s)
String string ="www.pqr.com/page/2/";
if(string.contains("page")){
//true
}
您可以使用正则表达式来完成:
(^(?:.(?!\bpage\b))+$)
检查DEMO
CODE:
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);
}
}
OUTPUT:
www.abc.com/some-text/
www.xyz.com/some-text/
说明
使用URI
:
public boolean containsPage(final String input)
{
return URI.create(input).getPath().contains("page");
}
这使得搜索page
仅中选择路径组件并不会如果存在上当在th e主机名/查询字符串/片段部分。
那么如果'page'出现在路径以外的地方呢?例如,'foo.bar/baz?page = 4'? – fge