2011-11-13 2 views
-1

나는 PHP를 사용하여 다른 두 부분 사이에 부분을 가져 오는 정규식을 만들려고합니다.두 부분 사이에 일반 정규식

나는이 :

RANDOMSTUFFpart1CONTENTpart2RANDOMSTUFF2 

그래서 내가 PART1와 2 부 사이의 내용을 추출 할.

내가 사용할 수있는 일반 정규식이 있습니까? 여기서 part1과 part2의 코드를 추가하면 작동합니까?

뭔가 같은 :

$part1=''; 
$part2=''; 
$string='RANDOMSTUFFpart1CONTENTpart2RANDOMSTUFF2'; 
$regexthing=... 

디미트리는 그의 대답을 편집 반환합니다 경우 나도 몰라, 그래서 내가 여기에 수정 된 솔루션을 넣어 것입니다 :

$part1 = 'part1'; 
$part2 = 'part2'; 
$string = 'RANDOMSTUFFpart1CONTENTpart2RANDOMSTUFF2'; 
$pattern = '/' . $part1 . '(.*?)' . $part2 . '/'; 
preg_match($pattern, $string, $match); 

답변

0

편집 : 예, 아무것도 사이에 아무것도가 있다고

$part1 = 'part1'; 
$part2 = 'part2'; 
$string = 'RANDOMSTUFFpart1CONTENTpart2RANDOMSTUFF2'; 
$pattern = '/' . $part1 . '(.*?)' . $part2 . '/'; 
preg_match($pattern, $string, $match); 
+1

는 보장이 없어 두 부분으로 사용하는 사이에있을 수 없다 경우'(*.?) part1'과'part2'에 대해서'. +?'에서'. *? '로 바꾸고 싶습니다. "사이에없는 것"과 "발견되지 않는 것"에는 차이가 있습니다. – nickf

+0

. +의 차이점은 무엇입니까? 그리고. *? – David19801

+0

또한'$ pattern = '/'를 사용하는 것이 좋습니다. preg_quote ($ part1). '(. +?)'. preg_quote ($ part2). '/'; 대신. –

1

을이 시도 :

/part1(.*?)part2/ 

.*?은 모든 문자까지까지 '파트 2'의 매우를 선두

관련 문제