2017-10-09 10 views
1

나는 다음과 같은 패턴을 일치하도록이 정규식을 캡처 그룹으로 시작정규식

fall 2000; 
spring 2019; waived 
summer 1982; sub T676 

은로 시작하지 않는 어떤 문자열과 일치하지 않나요 제 1 포착 그룹

waived Fall 2014; 
sub Fall 2011; waived 
와 같은 제 1 포착 그룹 ((fall|spring|summer)\s\d{4}) 10 각 일치하는 패턴이이 그룹으로 시작하는지 확인하려면 ((fall|spring|summer)\s\d{4}) 을 첫 번째 그룹 앞에 이와 같이 넣으려고 시도했지만 결과가 일치하지 않았습니다.

Demo

+0

"* 결과가 일치하지 않습니다. *"는 문제 설명이 아닙니다. [mcve]를 참조하십시오. – melpomene

+0

데모 링크 ... – hello

+0

https : // stackoverflow.co.kr/help/how-to-ask : 링크 할 수있는 문제의 실제 예를 만들 수 있다면 (예 : http://sqlfiddle.com/ 또는 http://jsbin.com/) 그렇다면 그렇게하십시오. * 또한 질문 자체에 코드를 포함 시키십시오 *. – melpomene

답변

2

당신은

/^(fall|spring|summer)\s\d{4};(?:.*(waived|sub\s[a-zA-Z]\d{3}))?/i 

regex demo를 참조 사용할 수 있습니다.

세부

  • ^ - 세 가지 대안
  • \s
  • 중 하나 - - 공백
  • \d{4}-4 자리
  • ; - 문자열
  • (fall|spring|summer)의 시작 반 - 콜론
  • (?:.*(waived|sub\s[a-zA-Z]\d{3}))? -의 선택 순서 :
    • .* - 당신이 필요로하는 값은 문자열의 시작에 가까운 경우 (게으른 .*? 대응과 대체 가능한 한 많은으로 줄 바꿈 문자 이외의 0+ 문자,)
    • ( - 그룹화의 시작 구성
      • waived - waived 문자열
      • | - 또는
      • sub - sub 문자열
      • \s - 문자열
      • [a-zA-Z] - 아스키 문자
      • \d{3} - 세 자리
    • ) - 그룹화 구조의 끝.