2016-06-14 3 views
-1

pdf 문서에서 읽은 데이터를 편집하려면 java의 string.replaceAll() 또는 replaceFirst() 메서드를 사용하려고합니다. 반환 할 수있는 데이터의 라인은 다음과 같습니다숫자 이외의 모든 것을 제거하는 Regex

1분의 21 ** E (6-11) 4479 77000327633 (U) 난 단지와 협력을 찾고에 대한 변수로 77000327633를 저장하고자

이 11 자리 숫자 만 캡처 할 올바른 정규식 나는 정규식에 대한 검색을 시도했지만 아무것도 내 원하는 결과를 줄 것 같다.

+0

의 내용으로 모든 것을 대체하기 위해 여기에 아이디어를 보여 아니라 완벽을 의미 항상 구조가되지 않는다 같은? 지금까지 어떤 표현을 시도 했습니까? 숫자와 일치하는 표현식을 제공 할 수 있다면 캡처 그룹에서 숫자 부분을 래핑하고'replaceAll() '에 역 참조를 사용할 수 있습니다. ' "yourstring".replaceAll ("접두사 (번호) 접미사", "$ 1")'. – Thomas

+0

숫자가 항상 약 11 자리임을 안다면이 정규식 (\ d {5,11})을 간단히 사용할 수 있습니다. https://regex101.com/r/kT3rR0/1을 테스트 할 수 있습니다. –

+1

에 대한 규칙은 무엇입니까? 번호 선택? 문자열의 마지막 숫자입니까? 문자열에서 가장 큰 숫자입니까? 4 자리 이상인 숫자? 문자열에서 네 번째 비 - 공백 항목? 뭐? –

답변

0

그것은 다음과 같이 할 수있다 :

String value = "21/1**E (6-11) 4479 77000327633 (U)"; 
Pattern pattern = Pattern.compile(".* (\\d{11}) .*"); 
System.out.println(pattern.matcher(value).replaceAll("$1")); 

출력 :

77000327633 

주의 : 여기서는 전화 번호가 11 자리이며 전후에 공백이 있다고 가정합니다.

NB2 :이 그룹과 글로벌 패턴을 정의하고 그룹

0

이 그것입니다 : (.*)[ ]([0-9])*[ ](.*)

사용하여 값에 액세스 할 수 $ 2

+0

한정 기호를 잘못 배치 한 것 같습니다. –

+0

무엇을 의미합니까? – CZ54

관련 문제