正则表达式只排除某些字符

时间:2014-02-14 11:05:28

标签: java regex

我有这样的网址,

www.abc.com/some-text/
www.xyz.com/some-text/
www.pqr.com/page/2/

我需要让URl期待包含“page”字样的网址 我的正则表达式是.*/(.(?!page)).* IT没有用。任何人都指出了问题和解决方案吗?

5 个答案:

答案 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/

说明

enter image description here