3
I가 다음 코드 조각 :.정규식 내에서 입력 문자열이 포함 + 작동하지 않습니다
$url = "http://www.example.com/url.html";
$content=Encode::encode_utf8(get $url);
$nameaux = Encode::encode_utf8($DBfield);
if($content =~ />$nameaux<\/a><\/td><td class="class1">(.*?)<\/td>/ ||
$content =~ />$nameaux<\/a><\/td><td class="class2">(.*?)<\/td>/ ||
$content =~ />$nameaux<\/a><\/td><td class="class3">(.*?)<\/td>/) {
... more code ...
}
이 코드 조각 $DBfield
더하기 (예를 포함하는 문자열과 동일한 경우를 제외하고 잘 작동 + 1) 그것에있는 $content
에 존재합니다.
누군가이 문제를 해결하는 방법을 설명 할 수 있습니까?
이 경우'로 다시 포맷 실제 코드, 정규식에 ($ 콘텐츠 = ~ /> $ nameaux <\/a><\/td>
'+'인 경우 이전 요소 (문자, 클래스, 그룹 ..)가 한 번 이상 나타나야 함을 의미합니다. '+'자체와 일치 시키려면'\ +'을 사용합니다. – eballes
답변
$ nameaux에 +와 같은 정규식 문자가 포함될 수 있으면
그래서\Q
...\E
으로 바꿔서 필드를 정규식 리터럴로 이스케이프해야합니다.+
그냥 더하기 기호하고 당신의 정규식이 일치하지 않는 이유는 "하나 이상"을 의미하지 않습니다.출처
2016-06-03 09:18:39 Bohemian
관련 문제