2013-06-09 1 views
1

을 포함하는 전체 단어와 필수 char 및 허용 된 문자 중 적어도 하나를 일치 시키려합니다. 예를 들어(하나 이상의) 필수 및 허용 된 문자가 포함 된 전체 단어를 일치시키는 정규식


필수 문자는 다음과 같다 : t, A, X]
허용 문자는 다음과 같다 : I, E]

t  : passed (one of mandatories are here) 
tea : passed (two of mandatories(t,a) and one allowed(e) here) 
e  : failed (none of mandatory is here) 
teas : failed (two of mandatories(t,a) and one allowed(e) here but one intruder(s)) 

적절한 REGEX 코드이 무엇인가? PHP 프로젝트로 각 행에 한 단어가 들어있는 MySQL 테이블의 12.000 행 검색에 사용됩니다.

+0

"침입자"는 물론 필수 및 허용되는 문자를 캡처 할 수 있어야합니까? – Tawnos

+0

아니요, 통과했는지 여부 만 확인하면됩니다. – effe

답변

0

:

\b[ie]*+[taxie]++\b 

설명 : [ie]*+ 이후

왼쪽과 소유욕 한정 기호에 단어 경계를 가지고, 그것은 가능한 모든 ie을 잡고 그들을 포기하지 않을 것이다 다음 문자는 다음 클래스의 t, a 또는 x이어야하며 + 한정 기호가 1 자 이상이어야합니다.

오른쪽의 단어 경계는 다른 종류의 문자를 허용하지 않습니다.

+0

@ MarkusJarderot : 이유를 이해할 수있는 설명을 읽을 수 없습니다. –

6

직접적인 대답을 제공하는 대신 도움을 받으십시오.

  • 0 개 이상의 허용 또는 필수 문자
  • 각 필수 문자
  • 0 개 이상의 허용 또는 필수 문자

쓰기 정규 표현식에를 : 전달하는 단어의 순서로 구성 이것들을 연결하여 전체에 대한 정규 표현식을 얻으십시오.

이 될 펄에서
+0

'tea'가 일치하지만 끝에있는 s는 실패하는 'teas'와 일치하지 않도록 양쪽 끝에 단어 경계 또는 시작/끝 문자열 마커를 포함하십시오. – Joe

+0

맞습니다. 암시 적 앵커를 사용하여 정규식 "match"/ "test"함수를 가정했습니다. – Thomas

0

..

$string =~ /^[tax]*[ie]+$/i; #i is for ignore case

*이 1 개 이상 +는 0 이상이다

난 그냥 당신이 전체 단어가 내가 그것을 다시하게 잡아 원을 깨달았다.

^및 $는 줄의 시작과 끝과 일치합니다.

당신은이 패턴을 사용할 수 있습니다
관련 문제