>백엔드 개발 >PHP 튜토리얼 >정규식에서 패턴 수정자의 역할에 대한 자세한 설명

정규식에서 패턴 수정자의 역할에 대한 자세한 설명

藏色散人
藏色散人앞으로
2020-01-27 14:31:123177검색

정규식에서 패턴 수정자의 역할에 대한 자세한 설명

정규식(i, g, m, s, x, e)

패턴 수정자는 무엇인가요?

1, 패턴 수정자는 몇 글자만 사용합니다. 각 정규식에서 수식에서 한 번에 하나씩 사용할 수도 있고 연속해서 여러 개 사용할 수도 있습니다.

2, 패턴 수정자는 전체 정규식을 조정하는 데 사용되며 정규식 기능의 확장이라고도 할 수 있습니다.

슬래시가 경계 문자인 '/Atoms and Metacharacters/Pattern Modifier'의 정규 표현식 공식을 기억하시나요?

패턴 수식어의 구성

패턴 수식어는 문자이지만 패턴 수식어 적용에서는 특별한 의미를 갖습니다. 어떤 패턴 수정자를 사용할 수 있는지 살펴보겠습니다. 아래 표를 참조하세요.

정규식에서 패턴 수정자의 역할에 대한 자세한 설명

일치 항목이 대소문자를 구분하지 않는다는 뜻이므로, 다음 예에서는 이를 보여주는 대신 다른 패턴 수정자의 예를 살펴보겠습니다.

1, 모드 수정자 m.

코드는 다음과 같습니다.

<?php 
$pattern = &#39;/^abc/m&#39;; 
$string = &#39;bcd 
abc 
cba&#39;; 
if (preg_match($pattern, $string, $arr)) { 
echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>"; 
print_r($arr); 
} else { 
echo "<font color=&#39;red&#39;>正则表达式{$pattern}和字符串{$string}匹配失败</font>"; 
} 
?>

매칭 결과가 성공했습니다. 참고: 패턴 수정자 m을 사용하면 일치하는 문자열을 기본 단일 줄 대신 여러 줄로 처리하므로 어떤 줄이라도 abc로 시작하면 일치가 성공합니다. 그러나 일치하는 줄 앞에 공백이 있으면 정규식의 일치 모드를 수정하지 않는 한 일치하지 않습니다.

2, 모드 수정자 s.

코드는 다음과 같습니다.

<?php 
$pattern = &#39;/a.*c/s&#39;; 
$string = &#39;adsadsa 
c&#39;; 
if (preg_match($pattern, $string, $arr)) { 
echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>"; 
print_r($arr); 
} else { 
echo "<font color=&#39;red&#39;>正则表达式{$pattern}和字符串{$string}匹配失败</font>"; 
} 
?>

이번에도 매칭 벌점에 성공했습니다. 위의 예에서 패턴 수정자를 제거하면 일치가 실패합니다. 패턴 수정자 s는 일치하는 문자열을 단일 줄로 처리하므로 이때 메타 문자의 "."는 개행 기호를 나타낼 수 있습니다.

3, 모드 수정자 x.

코드는 다음과 같습니다.

<?php 
$pattern = &#39;/a c/x&#39;; 
$string = &#39;a c&#39;; 
if (preg_match($pattern, $string, $arr)) { 
echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>"; 
print_r($arr); 
} else { 
echo "<font color=&#39;red&#39;>正则表达式{$pattern}和字符串{$string}匹配失败</font>"; 
} 
?>

이번 매칭 결과는 실패했습니다. 패턴 수정자 x를 사용하여 패턴의 공백을 취소했기 때문입니다. 참고: s로 표시되는 공백을 취소하기 위해 패턴 수정자를 사용할 수 없습니다.

4, 모드 수정자 A.

코드는 다음과 같습니다.

<?php 
$pattern = &#39;/ac/A&#39;; 
$string = &#39;acahgyghvbm&#39;; 
if (preg_match($pattern, $string, $arr)) { 
echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>"; 
print_r($arr); 
} else { 
echo "<font color=&#39;red&#39;>正则表达式{$pattern}和字符串{$string}匹配失败</font>"; 
} 
?>

정규식의 의미는 ac로 시작하는 문자열을 일치시킨다는 뜻이며, 결과는 성공입니다.

패턴 수정자 Z는 문자열로 끝나는 일치를 나타냅니다. 사용법은 A와 동일합니다. 다시 설명하지 않겠습니다.

5, 모드 수식어 U.

이 패턴 수정자는 정규 표현식에서 그 자체로 "탐욕적"입니다. Greedy 모드란 무엇입니까? Greedy 모드는 기본적으로 정규 표현식이 첫 번째 일치 항목을 찾은 후 후속 일치 항목을 계속 시도한다는 것을 의미합니다. 일치 항목을 찾을 수 있으면 가장 큰 문자열 범위와 일치합니다. 하지만 때로는 이것이 우리가 원하는 결과가 아닐 수도 있으므로 그리디 모드를 취소해야 합니다.

먼저 Greedy 모드의 예를 살펴보겠습니다.

코드는 다음과 같습니다.

<?php 
$pattern = &#39;/<b>.*<\/b>/&#39;; 
$string = &#39;<b>welcome</b> <b>to</b> <b>phpfuns</b>&#39;; 
if (preg_match($pattern, $string, $arr)) { 
echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>"; 
print_r($arr); 
} else { 
echo "<font color=&#39;red&#39;>正则表达式{$pattern}和字符串{$string}匹配失败</font>"; 
} 
?>

이 예의 원래 의도는 일치하는 것입니다. 환영하지만 결과는 일치합니다. 전체 문자열welcome to phpfuns(문자열 'welcome to phpfuns'의 시작과 끝이 정규식의 패턴 일치를 정확하게 구성하므로 일치가 성공적입니다). 이것은 탐욕 모드입니다. 정규식. 물론 이는 우리가 원하는 결과는 아니다.

탐욕 모드 취소

정규식의 탐욕 모드를 두 개로 취소하려면 패턴 수정자 U와 메타 문자 ?를 사용할 수 있습니다. 방법.

모드 수정자 U는 욕심 모드를 취소합니다

코드는 다음과 같습니다:

<?php 
$pattern = &#39;/<b>.*<\/b>/U&#39;; 
$string = &#39;<b>welcome</b> <b>to</b> <b>phpfuns</b>&#39;; 
if (preg_match($pattern, $string, $arr)) { 
echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>"; 
print_r($arr); 
} else { 
echo "<font color=&#39;red&#39;>正则表达式{$pattern}和字符串{$string}匹配失败</font>"; 
} 
?>

Metacharacter? 욕심 모드를 취소합니다 # 🎜🎜#

코드는 다음과 같습니다:

<?php 
$pattern = &#39;/<b>.*?<\/b>/&#39;; 
$string = &#39;<b>welcome</b> <b>to</b> <b>phpfuns</b>dsadsadas&#39;; 
if (preg_match($pattern, $string, $arr)) { 
echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>"; 
print_r($arr); 
} else { 
echo "<font color=&#39;red&#39;>正则表达式{$pattern}和字符串{$string}匹配失败</font>"; 
} 
?>

위 내용은 정규식에서 패턴 수정자의 역할에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제