使用单个正则表达式从一个字符串中提取少量子字符串

作为一个输入,我得到一个像“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
链接地址: http://www.djcxy.com/p/15257.html

上一篇: Extract few substrings from one string using a single regex

下一篇: Java regular expression offers any performance benefit?