[英]get the last portion of the link using java regex
我有一個arraylist
鏈接。 所有具有相同格式abc.([az]*)/\\\\d{4}/
List<String > links= new ArrayList<>();
links.add("abc.com/2012/aa");
links.add("abc.com/2014/dddd");
links.add("abc.in/2012/aa");
我需要獲取每個鏈接的最后一部分。 即,域名之后的部分。 域名可以是任何東西(.com,.in,.edu等)。
/2012/aa
/2014/dddd
/2012/aa
這是我想要的輸出。 我如何使用regex
來獲得它? 謝謝
有些人遇到問題時會想:“我知道,我將使用正則表達式。”現在,他們有兩個問題。
(有關背景,請參見此處 )
為什么使用正則表達式? 也許更簡單的解決方案是使用String.split("/")
,它為您提供原始字符串的子字符串數組,並用/
分隔。 有關更多信息,請參見此問題 。
請注意,實際上String.split()確實使用了正則表達式來確定要分割的邊界。 但是,在這種情況下,您不需要正則表達式,並且簡單的字符說明就足夠了。
請嘗試使用以下正則表達式,並使用基於括號()分組的正則表達式分組功能。
\.[a-zA-Z]{2,3}(/.*)
模式說明 :
點號后跟兩個或三個字母,后跟正斜杠,然后是任何字符
樣例代碼:
Pattern pattern = Pattern.compile("\\.[a-zA-Z]{2,3}(/.*)");
Matcher matcher = pattern.matcher("abc.com/2012/aa");
if (matcher.find()) {
System.out.println(matcher.group(1));
}
輸出:
/2012/aa
注意:
如果模式中始終有4位數字,可以使用\\\\.[a-zA-Z]{2,3}(/\\\\d{4}/.*)
使其更精確。
例如
String s="abc.com/2014/dddd";
System.out.println(s.substring(s.indexOf('/')));
輸出值
/2014/dddd
或者您可以使用split
方法。
System.out.println(s.split("/",2)[1]);//OUTPUT:2014/dddd --->you need to add /
String result = s.replaceAll("^[^/]*","");
s
將是列表中的字符串。
試試這個,並使用第二個捕獲組
(.*?)(/.*)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.