2014-11-14 2 views
0

예상대로 작동하는 .Net 정규식을 사용합니다 (대괄호 안에 선택적으로 공백으로 구분 된 값이 오는 특정 식별자 키 다음의 값과 일치해야합니다. http://regex101.com/r/yW4aZ3/113), 너무 느슨하게 일치합니다..Net 정규식은 입력이 끝나거나 줄 바꿈/공백으로 일치하는 경우에만 일치합니다.

기본적으로 일치 항목과 선택 사항() 뒤에 입력 끝, 하나 이상의 공백 또는 개행이 오는 경우에만 일치해야합니다.

사용되는 정규식은 다음과 같습니다

^Identifier ([a-zA-Z0-9-_]+)(?:\(([^)(]*)\))? 

및 샘플 (들)은 다음과 같습니다

Identifier abc sdfadf << should match 'abc' 
Identifier a_123bc(def) << should match 'a_123bc' and 'def' 

Identifier abcdef~ << does match but should NOT match because 'abcdef' is not followed by either line end, whitespace(s) or newline(s) 

사람이 언급 한 예를 들어 적절하게이 작업을 수행하는 방법을 알고 있나요?

+1

같은 행이나 공백의 끝 당신은 정말 문제의 정규식을 넣어해야한다고 말했습니다 그것이 작동하지 않는 이유를 보여

그것은 당신이 원하는 같은 소리 . –

답변

0

긍정적 인 선견문을 사용하십시오. 자세한 내용은이 article을 참조하십시오.

^Identifier ([a-zA-Z0-9-_]+)(?:\(([^)(]*)\))?(?=\s|$) 
+0

미카엘 고마워요.하지만 문자열이 마지막 문자 바로 뒤에서 끝나면 일치하지 않습니다. (공백 문자/개행 문자가 오는 경우) : http://regex101.com/r/yW4aZ3/ 115 –

+0

방금 ​​정규 표현식을 적절하게 업데이트했습니다. –

+0

우후 - 감사합니다 미할! –

0
^Identifier ([a-zA-Z0-9-_]+)(?:\(([^)(]*)\))? 

마지막 : 우리는 당신의 정규식의 끝에서 (?=\s|$)을 추가하는 경우 예를 들어,이 공백이나 문자열의 끝이 아니라이 공백 일치하지 않고 다음 문자열 만 일치합니다? 0 번 또는 1 번 말하는 것이므로

^Identifier ([a-zA-Z0-9-_]+) 

과 일치 할 것입니다.

^Identifier ([a-zA-Z0-9-_]+)(?:\(([^)(]*)\))?(?=[\s$]) 

최종 (?=[\s$])는 긍정적 예측

+0

안녕하세요, tolanj - 문자열이 다음과 같이 직접 끝나는 경우 불행히도 일치하지 않습니다. http://regex101.com/r/xV4eL5/1 .. 줄 바꿈/공백 문자가 오는 경우에는 일치합니다. –

관련 문제