[英]Regexp for get phone number mask from string
我的電話號碼范圍看起來像是“ + 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
我的正則表達式非常基本,因此可能會有更好的方法,但是類似( )?-( )?
,其中空格( )
是可選組可能會有所幫助,例如...
String pattern = "( )?-( )?";
String values = "+7312111111 - +7312222222-+7312333333-+7312444444- +7312555555 -+7312666666";
String parts[] = values.split(pattern);
for (String part : parts) {
System.out.println(part);
}
會輸出...
+7312111111
+7312222222
+7312333333
+7312444444
+7312555555
+7312666666
您甚至可以使用類似([ ]+)?-([ ]+)?
如果空格數未知或您可以使用-
並trim
結果,例如...
String values = "+7312111111 - +7312222222-+7312333333-+7312444444- +7312555555 -+7312666666 - +731277777";
String parts[] = values.split("-");
for (String part : parts) {
System.out.println(part.trim());
}
更新...
您可以使用\\+7312[0-9]+([ ]+)?-([ ]+)\\+7657[0-9]+
來查找可能的匹配項...
String value = "+7312111111 - +7657222222-+7312333333-+7312444444- +7312555555 -+7312666666 - +731277777";
Pattern p = Pattern.compile("\\+7312[0-9]+([ ]+)?-([ ]+)\\+7657[0-9]+");
Matcher m = p.matcher(value);
while (m.find()) {
value = m.group();
}
對於每個匹配的組,您可以只使用value.split("-")
來將兩個元素分開,如前所述。
您可以使用以下代碼提取:
String somestring="+7312xxxx - +7657xxxx";
somestring=somestring.replaceAll(" ", "");
String[] array=somestring.split("-");
for(String s : array)
{
System.out.println(s.substring(1));
}
您也可以將值存儲到變量中。
您將獲得以下輸出:
7312xxxx
7657xxxx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.