2014-09-13 4 views
-1

나는이 문자열이 있습니다정규식 : 두 단어 사이에 공백을 찾을

마이애미 (25) JOHN H. DOE 3059715648 코럴 게이블 스를

내가 정규식을 사용하여 다음과 같은 공간을 찾으려면 :

마이애미 25 [SPACE] JOHN H. DOE 3,059,715,648 [SPACE] 코럴 게이블

John H. Doe와 같은 다른 모든 공백을 무시하고 싶습니다.

고마워요!

+2

에 공백이 발견, 당신은 그것으로 무엇을 원하는가? – falsetru

+1

이 공간을 찾는 논리를 명확히합니까? – anubhava

+2

원하는 공간과 원하지 않는 공간을 논리적으로 구별하는 방법이 필요합니다. 예를 들어 규칙은 * 숫자 뒤에 오는 공백 만 찾으면 * 작동합니까? 그것은 당신이 보여주는 하나의 예제에서 효과가 있지만, 당신이 처리하고자하는 모든 문자열에 적합한 지 여부는 귀하의 질문에서 불분명합니다. – lurker

답변

1

주어진 문자열에서이 작업을 수행하기 위해 lookaround를 사용할 수 있지만이 논리는 확실하지 않습니다.

(?<=\d)\s+(?=\D) 

이 문자열의 현재 위치에, 어떤 선행하는 숫자라고 주장하고 무엇을 다음과하는 모든 문자가 아닌 숫자를 먹으 렴이다가, 성공적인 공간 문자 (들)은 일치합니다.

+0

감사합니다! 매력처럼 작동 – PizzaMonster

+0

당신은 오신 것을 환영합니다. =) – hwnd

+1

+1 - 사용자가 실제로 원했던 것을 알아내는 위대한 수정 구슬에 기부. 아마 비 Javascript 정규 표현식에서 \ d는 "1"(일명 ARABIC-INDIC DIGIT ONE)과 같은 것을 지적해야합니다. –

2

나는

(?<=\d)\s+(?=[A-Z]) 

이 숫자 후 하나 이상의 공백을 일치합니다, 당신이 뭔가를하려는 생각과는 대문자가 와야합니다.

DEMO

+0

좋아요! 이 정규식도 작동합니다! 고맙습니다! – PizzaMonster

0
(.*?(\\d+)(\\s+)(.*)) 

자바 코드 예제 :

Pattern p = Pattern.compile("(.*?(\\d+)(\\s+)(.*))"); 
Matcher m = p.matcher("Miami 25 JOHN H. DOE 3059715648 Coral Gables"); 
if(m.matches()) { 
    //m.group(2) = 25 
    //m.group(4) = JOHN H. DOE 3059715648 Coral Gables 
} 
관련 문제