PHP核心技术与最佳实践之正则表达式婚配规则
PHP核心技术与最佳实践之正则表达式匹配规则
PHP核心技术与最佳实践之正则表达式匹配规则
本文介绍几种常用的匹配规则。
1. 字符组
查找数字、字母、空白很简单,因为已经有了对应这些集合的元字符,但是如果匹配没有预定义元字符的字符集合,方法很简单, 就是在方括号内列出它们。
例如:[aeiou]匹配任何一个英文元音字母,[.*?]匹配标点中的一个。注意此时方括号内的元字符失去了特殊意义。
也可以指定字符范围,例如[0-9]的含义和\d完全一致:代表一位数字;同理[a-zA-Z0-9]等同于\w;
字符组很简单,但是一定要弄清楚字符组中什么时候需要转义。
2. 转义
如果想要查找或匹配元字符本身,比如查找*、?等就出现问题:没办法指定,因为它们会被解释成别的意思。这时就需要\来取消这些字符的特殊意义。这叫转义。
在PHP中使用反斜杠(\)表示转义,\Q和\E也可以在模式中忽略正则表达式的元字符。比如:
\d +\Q.$.\E$
以上表达式先匹配一个或多个数字,紧接着一个.点号,然后一个$,再然后一个.点号,最终是字符串末尾。也就是说\Q和\E中的元字符会被作为普通字符来匹配。
3. 反义
有些时候,查找的字符不属于某个字符类,或者表达式和已知定义相反,(比如除了数字以外其他字符),这时需要用到反义。
常用反义:
常用反义 |
描述 |
\W |
匹配任意不是字母、数字、下划线、汉字的字符 |
\S |
匹配任意不是空白符的字符 |
\D |
匹配任意非数字的字符 |
\B |
匹配不是单词开头或结束的位置 |
[^x] |
匹配除了x以外的任意字符 |
反义有一个比较明显的特征,就是和一些已知元字符相反,并且为大写形式。比如”\D”就表示非数字。
1) 不包含空白符的字符串
\S+
2) 用尖括号扩起来、以a开头的字符串:
提示:
“^”这里是非的意思,不是开头的。如何区分?
表示开头的 ^只能用在正则表达式的最前端,而表示取反的^只能用在字符组中,即只在中括号内出现。
注意:
不要随意使用反义,因为反义无形中扩大范围,而使自己没有考虑到。
4. 分支
分支就是存在多种可能的匹配情况。
(c|h|f|to|)cat
其中括号里的表达式将视为一个整体,分支条件指有几种规则,无论满足哪一种规则都能匹配,具体方法是使用“|”方法把不同的规则分隔开。
5. 分组
重复单个字符只需直接在字符后面加上限定符,但如果想重复多个字符?
常用的分组语法:
类别 |
语法 |
描述 |
捕获 |
(exp) |
匹配exp,并捕获文本到自动命名的组里 |
(? |
匹配exp,并捕获文本到name的组里 |
|
(?:exp) |
匹配exp,不捕获匹配的文本 |
|
零宽断言 |
(?=exp) |
匹配exp前面的位置 |
(? |
匹配exp后面的位置 |
|
(?!exp) |
匹配后面不是exp的位置 |
|
(? |
匹配前面不是exp的位置 |
|
注释 |
(?#comment) |
注释,不对正则有任何影响 |

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

CakePHP에 로그인하는 것은 매우 쉬운 작업입니다. 한 가지 기능만 사용하면 됩니다. cronjob과 같은 백그라운드 프로세스에 대해 오류, 예외, 사용자 활동, 사용자가 취한 조치를 기록할 수 있습니다. CakePHP에 데이터를 기록하는 것은 쉽습니다. log() 함수는 다음과 같습니다.

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

CakePHP는 오픈 소스 MVC 프레임워크입니다. 이를 통해 애플리케이션 개발, 배포 및 유지 관리가 훨씬 쉬워집니다. CakePHP에는 가장 일반적인 작업의 과부하를 줄이기 위한 여러 라이브러리가 있습니다.
