2014-08-31 2 views
1

나는 다음과 같은 문장을 가지고 있습니다. "AOrbOrCOrDOreOrdOr ...". "A", "b", "C"등과 같이 모든 단어를 일치 시키려고합니다. 그러나 "A", "bOr", "cOr"을 반환합니다. 여기 내 패턴은 /(.*?(?:(?=Or))|(?<!Or).*?)/입니다. 정규 표현식을 처음 사용했습니다. 도와주세요. 고마워요! 당신이 문자열 Or 다음에 모든 문자를 일치 시키려면AOrBOrCOrDOrE와 (과) 일치하는 방법

+0

당신이 하시겠습니까가 /이 사용하는 정규식을 해결할 수 있습니까? –

+0

RegEx를 배우고 있습니다. 가능한 경우 RegEx를 사용하여이 문제를 해결하려고합니다. –

답변

0

바로 그때, 문자열 Or 다음에 모든 알파벳을 일치하도록 정규식에

[A-Za-z](?=Or) 

DEMO

을 룩어를 사용 [A-Za-z] 대신 .을 사용할 수 있습니다. 당신이 Or처럼 일정한 구분자가있는 경우, 당신은 어떤 explode()를 사용할 수

$string = 'AOrbOrCOrDOreOrdOr...'; 
$words = explode('Or', $string); 

참고 :

.(?=Or) 

DEMO

+0

좋은 답변입니다! ..... – hek2mgl

+0

@Tim, 편집 해 주셔서 감사합니다. 그냥 오타 일 뿐이야. 그걸 수정 했어. –

+1

고마워. 그러나 이런 문장은 : "ABOrCOrDdOrE", 그냥 "B", "C", "d"가 아니라 "e"를 반환합니다. 패턴을 "[A-Za-z] * (? = Or)"로 변경하려고하면 "ABOrCOrDd"만 반환됩니다. 아이디어가 있습니까? –

5

정규식을 사용하는 대신 explode()를 사용하는 것 정규식을 사용하는 것보다 빠릅니다.

+2

** ** ** 정규 표현식이 필요 없습니다. 정규 표현식을 사용하는 다른 솔루션은 가독성과 성능면에서 실제로이 버전보다 열등합니다. –

+0

@ TheParamagneticCroissant : 우수함, 의미 하시겠습니까? –

+0

@TimPietzcker 죄송합니다. 그건 생각할 필요가 없습니다! 나는 정규 표현식 솔루션이'explode()'보다 열등하다는 것을 의미했다. 수정 됨. –

0

이 기능 폭발 사용할 수 있습니다

$text = "AOrbOrCOrDOreOrdOr..."; 
$array = explode('Or', $text); 

을 한 다음 이제 부품 배열 한 :

array("A", "b", "C", "D", "e",) // ...and so on 
+0

루프 유틸리티 란 무엇입니까? – Toto

관련 문제