我已經這樣設置的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