使用单个正则表达式从一个字符串中提取少量子字符串
作为一个输入,我得到一个像“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?