>  기사  >  백엔드 개발  >  PHP 정규식 입문 튜토리얼

PHP 정규식 입문 튜토리얼

WBOY
WBOY원래의
2023-06-23 12:46:491536검색

웹사이트나 애플리케이션을 개발할 때 텍스트를 처리해야 하는 경우가 많습니다. 검색 및 바꾸기, 가로채기 등과 같은 단순한 문자열 작업인 경우 일부 내장 함수를 사용하여 완료할 수도 있습니다. 그러나 보다 복잡한 패턴 일치 또는 데이터 추출을 수행해야 하는 경우 정규식을 사용해야 합니다.

정규식은 텍스트 데이터를 처리하는 강력한 도구입니다. 특정 기호와 규칙을 통해 문자열을 일치시키고 처리하는 데 도움이 됩니다. PHP에는 정규식이 내장되어 있으며 PCRE 라이브러리(Perl Compatible Regular Expressions)를 사용하여 일치를 수행할 수 있습니다.

이 글에서는 초보자가 PHP 정규 표현식을 빠르게 시작하고 이 강력한 도구를 익히는 데 도움이 되는 기본 구문과 사용법을 소개합니다.

  1. 기본 구문

정규 표현식은 일치시킬 패턴을 설명하는 특정 문자와 규칙으로 구성됩니다. PHP에서는 정규식을 슬래시(/)로 묶어야 합니다. 예:

$pattern = "/hello world/i";

이 정규 표현식은 문자열에서 "hello world"를 일치시키는 데 사용되며 대소문자를 무시합니다.

그 중 "/"는 정규식의 시작과 끝을 나타내며, 가운데가 매칭되는 패턴입니다. 이 예에서는 대소문자를 무시하기 위해 "i" 수정자를 사용했습니다. 수정자는 슬래시 외부에 있으며 정규식의 일치 동작을 수정하는 데 사용됩니다. 일반적인 수정자는 다음과 같습니다.

수정자 Description
i 대소문자 무시
m 문자열을 여러 줄로 처리
s will 점(.)이 일치합니다. 줄 바꿈을 포함한 모든 문자
x 정규 표현식에서 공백과 주석 무시
  1. 문자 세트

정규 표현식에서는 문자 세트를 사용하여 특정 문자 세트와 일치시킬 수 있습니다. 문자 세트는 대괄호([])로 묶어야 합니다. 예:

$pattern = "/[aeiou]/i";

이 정규식은 대소문자를 무시하고 문자열의 모든 모음을 일치시키는 데 사용됩니다.

대괄호 안에 일치하는 문자가 쉼표(,)로 구분되어 나열됩니다. 대시(-)를 사용하여 범위를 나타낼 수 있습니다. 예:

$pattern = "/[a-z]/i";

이 정규식은 대문자와 소문자를 무시하고 모든 소문자를 일치시키는 데 사용됩니다.

일부 특수 메타 문자를 대괄호 안에 사용하여 특정 문자 집합을 나타낼 수도 있습니다. 예:

메타 문자 설명
d 은 모든 숫자와 일치합니다.
D 은 숫자가 아닌 모든 것과 일치합니다.
w 문자, 숫자 또는 밑줄과 일치하세요.
W 는 문자가 아닌 문자, 숫자 또는 밑줄과 일치합니다.
s 공백 문자(공백, 탭, 개행 등)와 일치합니다.
S 공백이 아닌 모든 A와 일치합니다. 문자
  1. 정수자

정규식에서는 수량자를 사용하여 요소에 대한 일치 항목 수를 나타낼 수 있습니다. 일반적인 수량자는 다음과 같습니다.

Description
| 1개 이상 일치
    | 정확히 n개 일치
  • {n ,} | 최소한 n과 일치
  • {n,m} | n을 m과 일치


  • 예:
    $pattern = "/a+/i";

    이 정규 표현식은 문자열에서 하나 이상의 문자와 일치하는 데 사용됩니다. 대소문자는 무시됩니다.
  • $pattern = "/d{3,}/";
이 정규식은 3자리 이상의 문자열을 일치시키는 데 사용됩니다.

경계 일치

정규식에서 경계 일치는 일치 범위를 제한하는 데 사용됩니다. 일반적인 경계 일치 항목은 다음과 같습니다.

일치 기호

설명 ^ 문자열 시작 부분 일치 $ 문자열 끝 일치 경기 단어 경계 B는 단어 경계를 제외하고 위치 와 일치합니다.

例如:

$pattern = "/^hello/i";

这个正则表达式用于匹配以“hello”开头的字符串,忽略大小写。

$pattern = "/world$/i";

这个正则表达式用于匹配以“world”结尾的字符串,忽略大小写。

$pattern = "/hello/i";

这个正则表达式用于匹配单词“hello”,忽略大小写。

  1. 捕获分组

在正则表达式中,我们可以使用捕获分组来提取匹配的内容。捕获分组需要使用圆括号(())将要捕获的内容包裹起来。例如:

$pattern = "/(d{3})-(d{4})/";
$string = "my phone number is 123-4567";
if(preg_match($pattern, $string, $matches)){
    echo $matches[0]; // 123-4567
    echo $matches[1]; // 123
    echo $matches[2]; // 4567
}

这个正则表达式用于匹配“123-4567”这种形式的电话号码,并且将前三个数字和后四个数字分别保存到$matches数组中。

  1. 贪婪匹配和非贪婪匹配

在正则表达式中,默认情况下会进行贪婪匹配。也就是说,它会尽可能多地匹配字符。例如:

$pattern = "/.*hello/";
$string = "my name is hello, nice to meet you";
if(preg_match($pattern, $string, $matches)){
    echo $matches[0]; // my name is hello
}

这个正则表达式用于匹配字符串中的“hello”之前的所有字符。

如果我们想进行非贪婪匹配,也就是尽可能少地匹配字符,可以在量词后面添加一个问号(?)来实现。例如:

$pattern = "/.*?hello/";
$string = "my name is hello, nice to meet you";
if(preg_match($pattern, $string, $matches)){
    echo $matches[0]; // my name is 
}

这个正则表达式也用于匹配字符串中的“hello”之前的所有字符,但是它只匹配到了“my name is”。

  1. 其他函数

除了preg_match()函数之外,PHP中还提供了其他一些正则表达式相关的函数,例如:

函数 描述
preg_match_all() 用于匹配所有符合正则表达式的结果
preg_replace() 用于替换符合正则表达式的字符串
preg_split() 用于按照正则表达式将字符串分割成数组

例如:

$pattern = "/d+/";
$string = "I have 123 apples and 456 bananas";
$result = preg_match_all($pattern, $string, $matches);
print_r($matches);

$result = preg_replace($pattern, "***", $string);
echo $result;

$result = preg_split($pattern, $string);
print_r($result);

这段代码分别演示了匹配所有数字、替换所有数字、以数字为分隔符将字符串分割成数组的操作。

总结

本文介绍了PHP正则表达式的基本语法和用法,包括字符集、量词、边界匹配、捕获分组、贪婪匹配和非贪婪匹配等内容。正则表达式是一种非常强大的工具,掌握它可以让我们在处理文本时事半功倍。希望本文能够帮助读者快速入门并掌握PHP正则表达式的基本用法。

위 내용은 PHP 정규식 입문 튜토리얼의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.