簡體   English   中英

使用單個正則表達式從一個字符串中提取幾個子字符串

[英]Extract few substrings from one string using a single regex

作為輸入,我得到一個字符串,例如“ 0123456789@site.com”。 所有部分都是可變的。 唯一的規則是前面的數字始終為10,然后是“ @”。 我需要一個正則表達式,它將允許我提取“ 12345”(即位置2到6的數字)和“ site.com”子字符串。 例如,在上述情況下,結果可能是“ 12345site.com”或“ 12345:site.com”。 可以使用單個正則表達式嗎? 我們如何跳過第7位到第10位以及“ @”中的第一個數字? Java中的示例將不勝感激。

如果我正確理解了您,則此正則表達式將

\d(\d{5})\d{4}@(.+)

然后使用

matcher.group(1) + matcher.group(2)

連接組。

Java代碼:

public static void main(String[] args) {
    String s = "0123456789@site.com";
    String patternString = "\\d(\\d{5})\\d{4}@(.+)";
    Pattern pattern = Pattern.compile(patternString);
    Matcher matcher = pattern.matcher(s);
    if (matcher.matches()) {
        System.out.println(matcher.group(1) + matcher.group(2));
        // shows "12345site.com"
    }
}

專門針對您的輸入模式:

\\d{1}(\\d{5})\\d*@(.*)

2 capturing groups: 
   group 1: (\d{5})
   group 2: (.*)

Input: 0123456789@site.com
Output: 12345
        site.com

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM