我有一个电话号码范围的字符串,看起来像“+7312xxxx - +7657xxxx”(x 和 - 之间的空格可能是也可能不是)。我需要剪切这个字符串并得到带有“7312xxxx”和“7657xxxx”的字符串。我尝试一步一步,一个字符一个字符地完成,但这非常愚蠢和困难,我想我可以用正则表达式来做到这一点,如下所示
String somestring="+7312xxxx - +7657xxxx";
String[] array=somestring.split("\someregexppattern");
但我不知道如何构建真正的正则表达式。请告诉我怎么做。
编辑:感谢所有帮助我并给我答案的人,但我想知道哪种方式更快?用正则表达式还是用“-”分割?
最佳答案
您可以尝试以下正则表达式,
^([^-]*)-(.*)$
Java 正则表达式是,
"^([^-]*)-(.*)$"
第一个捕获组包含 -
之前的所有数字,第二个捕获组包含 -
之后的所有数字
要仅获取第一个和第二个不带空格的数字,
String s = "+7312xxxx - +7657xxxx";
Pattern p = Pattern.compile("^([^\\s-]*)\\s*-\\s*(.*)$");
Matcher m = p.matcher(s);
while (m.find()) {
System.out.println(m.group(1));
System.out.println(m.group(2));
}
输出:
+7312xxxx
+7657xxxx
关于java - 用于从字符串获取电话号码掩码的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24568525/