정규 표현 식 단일 줄,다 중 줄 모드 소개(사용 설명)

지난 몇 편의 정규 표현 식 에 대한 설명(상세 정보:정규 표현 식)에 이 어 우 리 는 오늘 계속해서 그것 의 한 줄,여러 줄 모드 사용,그리고 오류 가 발생 하기 쉽다 는 것 을 토론 합 니 다.한 줄,여러 줄 모드 는 모두 정규 표현 식 의 패턴 수정자 에 나타 난 매개 변수 입 니 다.현재 자주 사용 되 는 정규 표현 식 에는 다음 과 같은 옵션 이 있 습 니 다.예 를 들 어 자바 script 정규 표현 식 은 보통"/정규 표현 식 일치 문자/수정자",마지막"/"뒤 에는 수정자 입 니 다.그 다음 에 php 도 비슷 합 니 다.c\#,python 등 은 정규 표현 식 의 일치 함 수 를 호출 합 니 다.모두 다른 옵션 이 있 습 니 다.설정 모드 입 니 다.
한 줄,여러 줄 모드 는 이해 오류 가 발생 하기 쉽다.
왜 이해 오류 가 발생 하기 쉬 운 가요?그래서 많은 친구 들 이 글자 그대로 이해 하면 다음 과 같은 결론 을 얻 을 수 있다.(하하,방금 사 용 했 습 니 다.저도 이 친구 들 중 한 명 입 니 다)
1.한 줄 은 처음부터 끝까지 일치 합 니 다.여러 줄 은 문자열 과 일치 하면 줄 바 꿈 문자 가 있 으 면 이전 과 일치 합 니 다.
2.한 줄 과 여러 줄 이 충돌 하여 한 번 에 하나의 옵션 만 지정 할 수 있 고 동시에 사용 할 수 없습니다.
이렇게 이해 하면 사실은 이렇게 되 기 쉽다.공식 수첩 에서 뭐라고 하 는 지 봅 시다.
일방 통행,다 중 모드 공식 해석
패턴 문자
묘사 하 다.
s(한 줄)
이 수정자 가 설정 되 어 있 으 면 패턴 의 점 수 는 모든 문자 와 일치 하 며 줄 바 꿈 자 를 포함 합 니 다.이 수정자 가 없 으 면 점 수 는 줄 바 꿈 자 와 일치 하지 않 습 니 다.
m(다 중 줄)
대상 문자열 은 한 줄 의 문자 로 구성 되 어 있 습 니 다.(그러나 실제로 여러 줄 을 포함 할 수 있 습 니 다.)'줄 의 첫 번 째'메타 문자(^)는 문자열 의 시작 위치 만 일치 하고'줄 의 끝'메타 문자($)는 문자열 의 끝 만 일치 합 니 다.이 수정자 가 설정 되면'줄 끝'과'줄 끝'은 대상 문자열 의 임의의 줄 바 꾸 기()이전 이나 이후 와 일치 합 니 다.
위의 설명 을 통 해 이 두 개의 수식 자 는 모두 정규 표현 식 에서 흔히 볼 수 있 는 메타 문자 의 일치 범 위 를 수정 하 는 것 일 뿐 입 니 다."s"수정자,메타 문자"를 추가 하면 줄 바 꿈 문자()와 일치 할 수 있 습 니 다."m"수정자,메타 문자"$"를 추가 하면"문자 앞 에 만 일치 합 니 다.""원 문자"^"는"문자 뒤에 일치 합 니 다.우리 그냥 예 를 들 어 설명 하 자!다음 정규 표현 식 에 대해 서?문자,앞의 절 을 볼 수 있 습 니 다정규 표현 식(regex)탐욕 모드,게 으 름 모드 사용)
예 를 들다

<?php
///  hao123.com  
///      script  
 
/**
 *  script  *
 * @author chengmo
 * @copyright http://blog.chacuo.net/
 * @param string $content      
 * @param int $style     
 * @return string
 */
function remove_script($content,$style=1)
{
	$reg = $style == 1?"%<script.*?>.*?</script>%":"%<script.*?>.*?</script>%s";
 
	return preg_replace($reg,"",$content);
}
 
$content = file_get_contents('http://www.hao123.com');
echo remove_script($content);


예 를 들다

<?php
///  hao123.com  
///  meta    
 
/**
 *  meta    *
 * @author chengmo
 * @copyright http://blog.chacuo.net/
 * @param string $content      
 * @param int $style     
 * @return string
 */
function read_meta($content,$style=1)
{
	$reg = $style == 1?"%^<meta.*?/>%":"%^<meta.*?>\s+$%m";	
	preg_match_all($reg,$content,$arr);
	return $arr;
}
 
$content = file_get_contents('http://www.hao123.com');
var_dump(read_meta($content));


후기:s,m 수정자 만 맞 고 몇 개의 특수 원 문자 가 바 뀌 었 습 니 다.정규 표현 식 에 그 몇 개의 메타 문자 가 없다 면.s 를 열 면 m 문자 앞 뒤 에는 변화 가 없습니다.위 에서 hao 123.com 코드 를 읽 는 것 에 대해 우 리 는 s,m 모드 를 계속 동시에 사용 할 수 있 습 니 다.예:"%.*?(^)currentProfile.*$).*?%sm"은 모든 script 태그 와 일치 하 며,js 코드 는 curentProfile 로 시작 하 는 문자열 이 있 습 니 다.(다음은 정규 표현 식 입 니 다.한 줄 여러 줄 함께 사용 합 니 다)

좋은 웹페이지 즐겨찾기