2013-01-11 3 views
0

매우 빠른 질문입니다.정규 표현식 regexp - 문자 범위, 단어 경계, 어설 션

/[a-zA-Z]{1,}/ 

나는이 표현은 그 편지를 일치시킬 : 여기

는 표현이다. 그러나 또한 "="(등호)와 일치하는 것으로 보입니다. 내가 뭔가 잘못하고 있는거야? 예를 들어

:

/\B#{1}(__){1}(F|OB){1}_{1}([a-zA-Z]{1,})={1}\B/ 

이 일치해야합니다 : #__OB_someText== 또는 등호가 한 번만 나타납니다이 #__OB_someText====2 : #__OB_someText= 문제는 그것이이 일치합니다.

아마도 이러한 어설 션에 대해 많이 이해하지 못합니다. \b \B.

/\B#(__)(F|OB)_([a-zA-Z]+)=[^=]/ 

{1}

{1,}가있다 생략 할 수 있습니다 :

+0

당신의 정규식은 괜찮습니다 - 당신은 그것을 무엇에서 돌리고 있습니까? – foundry

+0

흠 .. M42 물론 맞습니다. 귀하의 정규식 (당신이 그것을 캡처 한 경우) 일치하지만 일치하는 정확한 부분을 반환하지만 실제로 단어 경계가 뒤에 =없는 경우 _fail_ ... – foundry

+0

... 또는 시작 및 단어 경계를 의도 했습니까? 종료? – foundry

답변

1

\B 사용

= 사이 =이 정규식 대신에 어떤 단어가 아닌 경계가없는, 비 단어 경계를 의미합니다 같음 +

[^=]은 문자가 아닌 것을 의미합니다 =

+0

{1}은 생략 가능합니다. {1,}은 (는) +와 (과) 동일합니다. {1,}이 (가) 더 좋았습니다. [^ =]는 ~이 아닌 모든 문자를 의미합니다. ^^ – VolosBlur

+0

@VolosBlur : 천만에. – Toto