2013-11-29 2 views
2

적어도 하나의 D를 포함하고 OO의 모든 발생을 따라야하는 알파벳 {A, B, ... Z}에 대해 정규 표현식을 설계해야합니다 (반드시 즉시)를 L.에 의해 라인이 좋아 그래야 : 정규식 특정 문자를 포함해야하는 문자열

이 승인 될 급지하지 마십시오. 나는 이것이 매우 까다 롭다는 말을 들었고 나는 단어들 사이에 흰 공백으로 많은 어려움을 겪어왔다.

는 내가 지금까지있는 것은 :

(?=[A-CE-Z]*D)(.*?OO(?=[A-KM-Z]*L) 

어떤 도움도 좋지 않을까!

감사합니다.

+2

어려움을 겪으 셨다면 여기에 포함시킬 수있는 방법에 대한 몇 가지 예가 있어야합니다. 질문을 편집하고 제공하십시오.그렇게하지 않으면 이것이 숙제 문제 인 것처럼 보입니다. 감사. –

답변

3

할 수 있습니다이 내다 기반 정규 표현식 시도 :

^(?=[ A-CE-Z]*D)(.*?OO(?=[^L]*L)|(?!.*?OO)[A-Z ])*$ 

설명 : 적어도 D 입력

  • (.*?OO(?=[^L]*L)|(?!.*?OO).)에서 확인이

    • (?=[ A-CE-Z]*D) ---으로 만듭니다 --- 아래 참조
      • .*?OO(?=[^L]*L) --- OO가있는 경우 적어도 L
      • (?!.*?OO). 뒤에는 ---

    enter image description here

  • +3

    +1. 정규 표현식은'{A, B, ..., Z} '를 넘기 때문에'[^ D]'를''[A-CE-Z]'로 바꿀 것입니다. – justhalf

    +0

    @RakeshKR : 좋은 정규식 이미지를 추가해 주셔서 감사합니다. – anubhava

    +0

    -1 나는 종종 구현에 기반하여 순전히 downvote하지 않지만,이 대답을 위해 나는 예외를 만들고있다 : 그것은 끔찍하다. 그것은 * 일할 수도 있지만, 필요한 것보다 약 3 배 길다. – Bohemian

    0

    고정 된 모양 이것은 미리 갈 수있는 방법에는 OO가 없다 :

    ^(?=.*D)(?!.*OO[^L]*$)[A-Z ]*$ 
    

    주에게 당신을 문자 클래스가 필요하지 않습니다. [A-CE-Z]; .*은 괜찮습니다 (생각해 보면 왜 그런지 깨달아야합니다).

    이 정규식의 live demo을 참조하십시오.

    +1

    그는 {{/ /; . , < >()'? 이것은 잘못된 것입니다. –

    +1

    문제를 다시 해결하십시오. oo는 선택 사항입니다. – anubhava

    +0

    @anubhava! 그것을 놓쳤습니다 (지금 고정). 아직도 너무 길지 않아도되는지보십시오. – Bohemian

    0

    나는

  • (?=.*D) 적어도 하나의 "D"가 들어있는 알파벳 이외 및 공백이 표시되지 않습니다
    • (?!.*[^\sA-Z]) 그래서

      ^(?!.*[^\sA-Z])(?=.*D)((?=.*OO.*L)|(?!.*OO)).*$

      처럼 자신의 그룹에 조건을 분리 좋아
    • ((?=.*OO.*L)|(?!.*OO)) "OO"가 포함 된 경우 "L"이 표시되거나 "OO"가 표시되지 않아야 함
    • .* 모든 것이 모든 조건을 만족합니다.
  • 관련 문제