2012-12-09 4 views
0

Java에서 정확히 하나의 콜론이있는 문자열을 일치 시키려면 어떤 정규 표현식을 사용하고 콜론이 공백 앞에 오도록해야합니까?공백 문자 앞에 한 번만 일치하는 정규 표현식

예를 들어, 다음 문자열 일치해야합니다 :

label: print "Enter input" 
But: I still had the money. 
ghjkdhfjkgjhalergfyujhrageyjdfghbg: 
area:54 

하지만

label: print "Enter input:" 
There was one more thing: I still had the money. 
ghfdsjhgakjsdhfkjdsagfjkhadsjkhflgadsjklfglsd 
area::54 
+1

왜 부정적인에서 제 2 하나? 그리고 너 스스로 무언가를 시도해 봤니? –

+0

두 번째 콜론이 공백 뒤에 표시됩니다. 그리고 나는 정규식을하기가 정말 신선합니다. 그래서 그것을 통해 고투하고 싶지 않았습니다. = P – Kevin

+1

@Kevin 이제 왜 우리가 당신을 위해 고군분투해야합니까? ;) [좋은 튜토리얼] (http://www.regular-expressions.info/tutorial.html)을 읽어야합니다. 정규 표현식은 충분히 자주 사용하게 될 좋은 지식입니다. –

답변

3

10 당신이 사용할 수있다 (전체 문자열을 일치하도록 요구하는) matches와 함께 사용하면 의미

[^\\s:]*:[^:]* 

: 다음 임의적으로 많은 비, whitespace: 자하는 :을, 더 이상 임의로 많지 않은 문자 :.

저는 실제로 두 개의 정규식 개념을 사용했습니다 : (부정한) character classesrepetition.

: 전후에 적어도 하나의 문자가 필요하면 해당 *+으로 바꿉니다 (주석에서 jlordo가 지적한대로).

그것은 우리가 공백 전화에 따라 달라집니다
+1

+1,하지만 그는 세미콜론 앞에'+'한정 기호를 원할 것입니다. – jlordo

+0

@jlordo hm, 어디에도 지정되지 않았지만 좋은 점. 하지만 어쨌든 그것을 추가 할 것입니다. –

+0

예, 그렇기 때문에 아마 썼습니다;) – jlordo

0

을 다음 작동합니다 :

^[^\s:]*:(?!.*:) 

당신의 문자열을 사용 줄 바꿈을 포함 할 경우 DOTALL 플래그 또는 정규식을 다음과 같이 변경하십시오.

(?s)^[^\s:]*:(?!.*:) 
+0

자, 이제는 여전히 마지막 카운터 예제와 일치합니다;) –

0

때문일 수 있습니다

[^\\p{Space}:]*:[^:] 
+0

'. +'는 공백을 허용하고 여러 개의':'를 허용합니다. –

+0

맞아요, 고정했습니다 –

+0

아닙니다. 끝에'* '가 없습니다.) –

0

당신이 시작해야하는 다음

Matcher MatchedPattern = Pattern.compile("^(\\w+\\:{1}[\"\\w\\s\\.]*)$").matcher("yourstring"); 
관련 문제