탐욕스러운 +
을 사용하여 1 회 이상 일치하는 항목을 찾으려면 양수 차선 찾기를 어떻게 사용합니까?RegEx - 긍정적 인 Lookbehind 문제
(?<=\w)\w+
하지만 모든 \ w 유사한 일치해야합니다 :
이 작동
(?<=\w+)\w+
구문은 두 번째 예에서 잘못하고 그것이 작동하지 않습니다.
어떻게 여러 번 일치하는 긍정적 인 lookbehind를 만들 수 있습니까?
탐욕스러운 +
을 사용하여 1 회 이상 일치하는 항목을 찾으려면 양수 차선 찾기를 어떻게 사용합니까?RegEx - 긍정적 인 Lookbehind 문제
(?<=\w)\w+
하지만 모든 \ w 유사한 일치해야합니다 :
이 작동
(?<=\w+)\w+
구문은 두 번째 예에서 잘못하고 그것이 작동하지 않습니다.
어떻게 여러 번 일치하는 긍정적 인 lookbehind를 만들 수 있습니까?
당신은 아마 사용 후 캡처 그룹을 어떤 lookbehinds없이 일치 할 :
if (preg_match('~[abc]+([cde]+)~', $string, $matches)) {
echo $matches[1]; // will contain the [cde]+ part
}
을 할 수있는 아주 더러운 방법은 문자열을 반대하고 대신에 긍정적 예측을 사용하는 것입니다. 이것은 내가 (더 lookbehinds가 지원되지 :() 자바 스크립트에서 사용하는 트릭이다 그래서 당신은 같은 것을해야
:. 본의 발생에 위의 코드는 일치합니다
$string = 'This is a long string that must show this is what will happen';
$str_rev = strrev($string);
if (preg_match('!(si)(?=\w+)(\w+)!i', $str_rev, $matches)) {
print_r($matches);
}
입니다 + w \ 문자열. 두 번째 은 일치하고 예제에서 필요하지 않은 경우 보여주기 위해 단지이다.
이 기술은 당신이 greedines에 대해 하나 개의 방향을 사용하는 경우에만 가능하다는 것을 명심하십시오 Lookbehind/aheads (예 : \ w +와 함께 lookbehind를 사용할 수 없습니다. \ w +와 함께 lookahead와 함께 사용할 수 없습니다)
매우 흥미 롭습니다. – sawa
죄송하지만, lookbehinds에 한정어가 없습니다!
나는 임의의 regexps '에 일치시킬 수 있습니다 (? = 정규 표현식)을 perlretut을의 regexps'에 작동을 을 lookbehind내다이를 찾았지만 (? < = 고정 정규 표현식)에만 고정 폭
나는 이것이 PHP regex 엔진에도 유효하다고 가정합니다.
실제로 무엇을하려고합니까? – Gumbo
당신은 _ 가변 길이 lookbehind_에 대해 이야기하고 있습니다. 아주 몇몇 정규식 엔진이이를 지원합니다. .NET 및 JGSoft 엔진은 내가 알고있는 유일한 엔진입니다. 검보가 묻는 것을 반복 할 것입니다 ... 무엇을 맞추어야합니까? – ridgerunner
코멘트 주셔서 감사합니다 - 나는 단 하나의 단어가 아닌 구문과 일치하는 태그 클라우드를 구축하려고합니다. 가변 길이 lookbehind는 전체 문자열에 걸쳐 다른 위치의 단어 문자열을 비교하는 것입니다. 지저분한 지 알고 있습니다. – Kit