作为输入,我得到一个像" 0123456789@site.com"的字符串。所有部件都是可变的。只有规则是前面的数字总是10,然后有" @"。 我需要一个正则表达式,这将允许我提取" 12345" (即位置2到6的数字)和" site.com"子。例如,在上述情况下,结果可能是" 12345site.com"或" 12345:site.com"。 可以用一个正则表达式完成吗? 我们怎样才能跳过第7到第10位和第9位的第一位数字和数字? Java中的示例将不胜感激。
答案 0 :(得分:1)
如果我理解正确,这个正则表达式将会
\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"
}
}
答案 1 :(得分:0)
特别针对您的输入模式:
\d{1}(\d{5})\d*@(.*)
2 capturing groups:
group 1: (\d{5})
group 2: (.*)
Input: 0123456789@site.com
Output: 12345
site.com