2014-10-10 6 views
-1

저는 정규 표현식에 익숙하지 않습니다. 주어진 문자열에서 하나의 하위 문자열을 추출하는 방법의 기초는 알고 있지만 필요한 여러 부분을 얻으려고 애 쓰고 있습니다. 나는 누군가가이 간단한 예를 가지고 나를 도울 수 있는지 궁금해하고있다. 그리고 나는 거기서부터 나아 간다. 이 문자열을 가지고 :PHP 정규식이 여러 조각과 일치합니다

LMJ노이을 수상했다. 존 -KEN # LEIGH LMJ대 # ONEIL

이탤릭체 부분은 변경됩니다 대담한는 동일하게 유지 문자열의 부분입니다 모든 문자열에. 내가 밖으로 필요로하는 부분은 다음과 같습니다이 경우 LMJ입니다

  1. 첫 번째 팀 ID는이 항상 문자열을 시작하고, ^[A-Z]{3} 3 대문자 수? 3 개 스트링 Neu, Off, Def, [Neu|Off|Def] 중 하나 일 수

  2. 노이 부?

  3. 항상 Zone -, [A-Z]{3}이라는 단어 뒤에 오는 두 번째 팀 부분은 무엇입니까?

  4. 첫 번째 # 다음에 오는 문자열의 숫자 부분이 필요합니다. 1 또는 2 자리 숫자 [0-9]{1,2} 일 수 있습니까? 제외하고 3과 동일

5.Third 팀 부분은 [A-Z]{3}vs 후에 나타납니다?

  1. 두 번째 숫자 뒤에 숫자가 필요합니다. #, [0-9]{1,2}?

나는이 모든 것을 하나의 정규 표현식에 넣고 싶습니다.

답변

2

대괄호 안에있는 것은 모두 소위 문자 클래스입니다.이 문자는 하나의 문자와 만 일치합니다.그래서, [Neu|Off|Def] 의미 : (Neu|Off|Def)

함께 퍼팅 : Neu|O, f 또는 D가 (반복 무시) 문자

은 당신이 원하는 것은 캡처 그룹의 정확히 한

^([A-Z]{3}) won (Neu|Off|Def)\. Zone - ([A-Z]{3}) #([0-9]{1,2}) [A-Z]+ vs ([A-Z]{3}) #([0-9]{1,2}) [A-Z]+$ 

(이것은 당신이 "LEIGH"와 "ONEIL"부분에 관심이있어 가정, 이들은 대문자에 항상)

+0

감사합니다. Roel. 노력한 몇 가지 예에서 완벽하게 작업했습니다. 시도하고이 예제를 사용하여 몇 가지 정규식 문자열을 만듭니다. – ninedoors

+0

http://regex101.com/을 확인하는 것을 잊지 마세요. –

0

정규식은 다음과 유사해야합니다.

'/([A-Z]{3})\ won\ (Neu|Off|Def)\.\ Zone\ -\ ([A-Z]{3})\ (\#[0-9]{1,2}\ \w+)\ vs\ ([A-Z]{3})\ (\#[0-9]{1,2}\ \w+)/' 

()은 다른 부분을 캡처하는 데 사용됩니다.

이것은 제대로 테스트되지 않았습니다.

관련 문제