2009-05-06 5 views
3

C# 정규식 일치 시작은 동시에

"ABCD BBB CCC"
  • "ABCE BBB CCC"
  • "abcf BBB CCC"6 문자열

    1. 가 말
    2. "AAA ABCD CCC"

    3. "AAA ABCE CCC"
    4. "AAA abcf CCC"

    사용자는 표현 "<abc[!e]"

    이 표현은 정규식 다음 "^ ABC [^ 전자]"로 번역됩니다

    번역 정규식이 성공적으로 문자열 1을 일치합니다 3

    내가 만약에 진입 문자열 4와 6을 일치시키고 싶었지만 식은 "\ Wabc [^ e]"로 변환되어야합니다 (abc 문자 앞에 공백이 일치합니다 :(좋지 않음)

    불행한 사용자 입력 식은 정규식에서 1,3 및 4,6 문자열 모두와 일치해야합니다.

    사용자를 번역 할 수있는 방법이 있나요 "^ ABC [^ 전자]"와 "\ WABC [^ 전자]"표현 (이상적으로 두 번째 표현식 먼저 공간과 일치하지 않을 :))

  • +2

    시도해 보셨습니까? "(^ abc [^ e] | \ Wabc [^ e])"? 아니면 그냥 "(^ | \ W) abc [^ e]"? (나는 그것을 시도하지 않았기 때문에 대답 대신에 주석을 사용하고있다.) –

    +0

    나는 또한 'aaaabcd'와 일치하지 않아야한다고 생각한다. –

    +0

    lassevk 이것은 내 인생을 좀 더 쉽게 만들었다. :). \ W가 공간과 일치하기 시작하지 못하는 경우 "abcd"와 일치합니다. –

    답변

    4
    결합 할 정규식에 식을 입력

    \babc[^e] 
    

    내가 가장 펄 스타일의 정규 표현식 엔진에서 작동해야한다고 생각 :

    펄은 제로 폭 단어 경계 \ B를 알고있다.

    +0

    +1 - 내 테스트에서 작동했습니다. 내 대답을 삭제했습니다. –

    +0

    완벽하게 작동합니다. 고맙습니다 :) –