2012-02-27 2 views
2

나는 다음을 포함하는 문자열이있는 경우 : 이 1 개 시험 내가 전화 번호로 1234567890을 추출해야 123-456-7890
에게 있습니다. 테스트 전의 1 번을 추출하고 싶지 않습니다.
Java에서 정규식을 사용하여 어떻게 할 수 있습니까?정규 표현식을 사용하여 문자열의 전화 번호를 추출하는 방법은 무엇입니까?

나는 방법을 알고 있지만 나는 그것이 최선의 해결책 인 경우 확실하지 않다 : 다른 조합을 필요로하는 경우 (xxx-xxx-xxxx)을 찾을 수

String inputString = "This is 1 test 123-456-7890"; 
string result = inputString.replaceAll("(\\d{3})-(\\d{3})-(\\d{4})",""); 
String phoneNumber = inputString.replace(result, ""); 
+0

지금까지 해보신 것은 무엇입니까? 다음 중 하나가 "123456 1234567890"중 하나를 통과하는지 모르기 때문에 요구 사항이 다소 모호합니다. 입력을 형식화 할 수 없다면 올바른 결과를 얻으려고 투쟁 할 것입니다 (자유 형식 입력이있는 것으로 보임) – radimpe

답변

6

다음 코드는 당신이 언급 문자열의 전화 번호를 확인하고 인쇄를합니다 : 다른 답변, 많은 전화 번호에서 지적했듯이,

String str = "This is 1 test 123-456-7890"; 

Pattern pattern = Pattern.compile("\\d{3}-\\d{3}-\\d{4}"); 
Matcher matcher = pattern.matcher(str); 
if (matcher.find()) { 
    System.out.println(matcher.group(0)); 
} 

을하지만 (특히 국제없는 것들) 일치하지 않습니다 패턴.

+0

대단히 감사합니다! 이 코드는 빈을 검색하는 코드입니다. – Wael

2
(\d{3})-(\d{3})-(\d{4}) 

는, 조정 {X}에 대한

http://www.exampledepot.com/egs/java.util.regex/BasicMatch.html

0 : 얼마나 많은 숫자는 XXXXXXXXXX 등보고 싶은 (\ d를 {10})

다음

정규식을 사용하여 결과를 얻을하는 방법에 대한 코드 예제입니다 전화 번호에 대한 하나의 보편적으로 허용되는 형식 규칙 이 없기 때문에 모든

+0

단지 존재하는지 확인하고 싶습니다. 이미 그 방법을 알고 있습니다. . 하지만 내 문제는 새로운 변수 – Wael

+0

결과 (전화 번호)를 저장하는 것입니다 그래서 정규 표현식에 대한 질문, u는 r 자바에서 정규 표현식을 사용하는 방법을 묻지. 질문은 무엇을 시도하고 코드를 게시하는 것입니다. – Churk

+1

@Wael : 질문에 추가하고 주석에 넣지 마십시오. – ohaal

6

첫째, 정규 표현식이 제대로을 할 간단한 방법이 없다는 점에 유의하시기 바랍니다. 나는 지역 대회입니다 충분히 더 형식이 확신

+1-555-2345 
+358(0)1234567 
02 500 500 
+31 44 55 66 77 
123-456-7890 
+82 (0) 77 233 ext. 3456 
(09) 223 44 ext 123 

: 예를 들어 다음과 같은 올바른 형식의 전화 번호를 모두 들어

.

텍스트 줄의 전화 번호 뒤에 아무 것도없는 경우 줄 끝에서 일치하는 .*[^0-9-()] ([0-9-()]+)$으로 갈 것입니다.

그렇지 않으면, 내가 항목 당 하나 개의 일치 이 있음을 ([0-9-()]+)희망의 모든 발행 수를 검색 할 것이다 (즉, 충분히 긴 9 개 + 문자 (나는 당신이 당신의 데이터 항목 경계의 일종이 있다고 가정))을 전화 번호로 선택하십시오.

이러한 방법 중 어느 것도 ext의 숫자를 허용하지 않습니다.

+0

좋은 질문입니다. 나는 내 대답을 게시 할 때 국제 전화 번호를 고려하지 않았다. – Churk

+0

답변은 어디에 있습니까? – stema

+0

아니요 그냥 NNN-NNN-NNNN 인 1 형식을 처리해야합니다. – Wael

6

최상의 방법은 libphonenumber입니다. 사용할 수있는 기능은 findNumbers입니다. 여기 코드

public static void extractPhoneNumber(String input){ 


    Iterator<PhoneNumberMatch> existsPhone=PhoneNumberUtil.getInstance().findNumbers(input, "IN").iterator(); 

    while (existsPhone.hasNext()){ 
     System.out.println("Phone == " + existsPhone.next().number()); 
    } 
} 
+0

이 lib가 Google에서 제공 한 점에 대해 언급 할만한 가치가 있습니다. –

1

MOBILE_NUMBER = PhoneNumberUtils.stripSeparators (모바일)이고;

PhoneNumberUtils 클래스는 전화 번호 형식 지정 작업에 대해 다른 기능을 제공합니다. stripSeparators 함수를 사용하면 모든 형식의 형식을 제거하고 정확한 정수를 얻을 수 있습니다.

관련 문제