우선 정규식 중 욕심이 많은 것과 그렇지 않은 것이 무엇인지 알아볼까요? 아니면 일치 우선순위 수량자는 무엇이고 우선순위 수량자를 무시하는 것은 무엇입니까?
그렇습니다. 개념이 무엇인지 모르겠습니다. 예를 들어 보겠습니다.
한 학생이 그 사이의 내용을 필터링하고 싶어 정규 규칙과 절차를 이렇게 썼습니다.
$str = preg_replace('%<script>.+?</script>%i','',$str);//非贪婪
이상이 없는 것처럼 보이지만 사실은 그렇지 않습니다.
$str = '<script<script>alert(document.cookie)</script>>alert(document.cookie)</script>';
이면 위의 과정을 거친 후 결과는
$str = '<script<script>alert(document.cookie)</script>>alert(document.cookie)</script>'; $str = preg_replace('%<script>.+?</script>%i','',$str);//非贪婪 print_r($str); //$str 输出为 <script>alert(document.cookie)</script>
아직 원하는 효과를 얻지 못하고 있습니다. 위의 것은 탐욕이 아니며, 어떤 것은 게으름이라고도 합니다. non-greedy의 표시는 +?, *?, ?? 등과 같은 정량적 메타 문자 뒤에 ?를 추가하는 것입니다(더 특별합니다. 이에 대해서는 향후 블로그에서 작성하겠습니다). 즉, ?를 쓰지 않으면 욕심이 없다는 뜻이다. 예를 들어
$str = '<script<script>alert(document.cookie)</script>>alert(document.cookie)</script>'; $str = preg_replace('%<script>.+</script>%i','',$str);//非贪婪 print_r($str); //$str 输出为