我有这样的网址,
www.abc.com/some-text/
www.xyz.com/some-text/
www.pqr.com/page/2/
我需要让URl期待包含“page”字样的网址
我的正则表达式是.*/(.(?!page)).*
IT没有用。任何人都指出了问题和解决方案吗?
答案 0 :(得分:4)
你为什么要寻找正则表达式?这可以使用String.contains(String s)
String string ="www.pqr.com/page/2/";
if(string.contains("page")){
//true
}
答案 1 :(得分:1)
使用以下正则表达式。 (指定^
,$
以确保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
答案 2 :(得分:1)
你的意思是除了或期望你的问题吗?
您可以通过page
选项忽略其中包含lookahead
的网址。
/^(?!.*page).*/
如果您想选择包含网页的网址,那么
/^(?=.*page).*/
答案 3 :(得分:1)
使用URI
:
public boolean containsPage(final String input)
{
return URI.create(input).getPath().contains("page");
}
这允许在路径组件中仅搜索page
,如果存在于主机名/查询字符串/片段部分中,则不会被愚弄。
答案 4 :(得分:0)
您可以使用REGEX:
(^(?:.(?!\bpage\b))+$)
检查 DEMO
代码:
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/
说明