资讯专栏INFORMATION COLUMN

PHP 正则表达式

Hancock_Xu / 609人阅读

摘要:目前为止,我们前面所用过的精确文本匹配也是一种正则表达式。在中,正则表达式一般由正则字符和一些特殊字符类似于通配符联合构成的一个文本模式的程序性描述。原子必须是正则表达式的最基本组成单元,而且在每个模式中最少要包含一个原子。

PHP 正则表达式 一、正则表达式简介

正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找和替换操作。目前为止,我们前面所用过的精确(文本)匹配也是一种正则表达式。

在PHP中,正则表达式一般由正则字符和一些特殊字符(类似于通配符)联合构成的一个文本模式的程序性描述。

在PHP中,正则表达式有三个作用:1.匹配,常用于从字符串中析取信息 2.用新文本代替匹配文本 3.将一个字符串拆分为一组更小的信息块

一个正则表达式中至少包含一个原子

二、两套正则表达式函数库

PCRE库(推荐):使用preg_为前缀命名的函数;

POSIX库:使用ereg_为前缀命名的函数

三、PCRE库函数
      函数名                        描述
----------------------|--------------------------
preg_match()          |    进行正则表达式匹配
preg_match_all()      |    进行全局正则表达式匹配
preg_replace()        |    执行正则表达式的搜索和替换
preg_split()          |    用正则表达式分割字符串
preg_grep()           |    返回与模式匹配的数组单元
preg_replace_callback |    用回调函数执行正则表达式的搜索和替换
四、使用场景

表单验证

url_rewrite (url地址重写)

爬虫

五、正则表达式的组成部分

1.定界符 (必须)
通常使用特殊字符组成,常用“/”。
2.原子(必须)
是正则表达式的最基本组成单元,而且在每个模式中最少要包含一个原子。原子是由所有那些未显示指定为元字符的打印和非打印字符组成,具体分为5类。

普通字符作为原子:如a~z,A~Z,0~9。

一些特殊字符和转义后元字符作为原子: " * + ? .等。

一些非打印字符作为原子:如:f n r t v cx。

使用“通用字符类型”作为原子:如:d D w W s S。

自定义原子表([ ])作为原子:如:"/[apj]sp/"。

3.元字符
4.模式修正符

示例:

# 匹配一个字符a
$pattern = "/a/"; 

# 匹配字符a,如果有返回1,没有返回0,只能匹配一次。
echo preg_match($pattern, "012344556"); 

# preg_match也可用于判断
if(preg_match($pattern, "1232423423", $matches)) {
    echo "匹配到了
"; # 并把匹配出来的字符以数组的形式赋值给$matches; # 打印结果:`array(1) {[0] => string(1) "a"}`; var_dump($matches); }else { echo "没有匹配"; }

元字符匹配:

# 如果只想匹配 `.`,特殊含义的字符要转义。
$pattern = "/./"

# 匹配非打印字符
$pattern = "/
/"

# 匹配0-9数字
$pattern = "/d/";
# 匹配除了0-9的数组
$pattern = "/D/";

# 匹配数字+大小写字母+下划线
$pattern = "/w/";
# 匹配除了数字、大小写字母、下划线
$pattern = "/W/";

# 匹配空白符(换行、缩进、空格)
$pattern = "/s/";
# 匹配除了空白符的字符
$pattern = "/S/";

# `*` 代表匹配前面的原子出现0、1、或多次
$pattern = "so*u";
# `+` 代表匹配前面的原子出现1次、或多次
$pattern = "so+u";
# `?` 匹配前面的一个原子出现0次或者1次
$pattern = "hao?sou";

# 匹配除了换行符的任意字符
$pattern = "/./";

# `|`代表或者
$pattern = "/a|b|c/";

# 匹配前面的一个原子恰巧出现n次;
$pattern = "/hao{2}sou/";
# 匹配出现>=2次
$pattern = "/hao{2, }sou/";
# 匹配出现2-5次
$pattern = "/hao{2, 5}sou/";

# `^` 必须以该原子开头
$pattern = "/^aaa/";

# `$` 必须以该原子结尾
$pattern = "/aaa$/";

# 严格模式
# 必须严格只能匹配aaa。
$pattern = "/^aaa$/";

# a | b | c
$pattern = "/[abc]/";
# 除了a,b,c
$pattern = "/[^abc]/";

# `()`可以看做一个整体,还可以做反向引用
# 比如要匹配协议头为http、https、ftp
$pattern = "/(http|https|ftp):///";

# 匹配除了空白符的任意字符
$pattern = "/.*/";

# `.*`贪婪模式
$str = "abcabc";
$pattern = "/.*/";
# `.*?`取消贪婪模式
$pattern = "/.*?/";
或:
$pattern = "/.*/U";

模式修正符:

`i`代表ignore,忽略大小写
`m`匹配多行
`.`修正.的换行符
`x`忽略正则表达式里面的空白符
`D`取消$对
的忽略

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29427.html

相关文章

  • PHP 正则达式入门 Getting Started with PHP Regular Expre

    摘要:兼容的正则表达式已经实现了很多使用不同解析引擎的正则函数。中主要有两个正则解析器一个称为,另一个称为兼容正则表达式。在中,每个正则表达式模式都是使用符合格式的字符串。 原文链接: Getting Started with PHP Regular Expressions Last-Modified: 2019年5月10日16:23:19译者注: 本文是面向0正则基础的phper, 很多...

    zhangke3016 评论0 收藏0
  • PHP 正则达式

    摘要:规范为的缩写,中文即兼容正则表达式,由开发的库,为很多现代工具所使用,大多数编程语言的正则表达式也都是集成该规范。接下来本文会对规范的正则表达式作出详细介绍。正则语法分隔符当使用函数的时候,模式需要由分隔符闭合包裹。 概述 正则表达式(Regular Expression)是一种字符匹配工具,通过构建具有特定规则的模式,和输入字符串数据进行比较,然后进行匹配、分割、替换等等的相关操作。...

    rozbo 评论0 收藏0
  • PHP/JS 常用的正则达式

    摘要:正则表达式的都是匹配和替换搜索正则表达式要匹配的字符串匹配到的字符串匹配到的个数,没有匹配到返回下面是例子执行一个正则表达式匹配,非贪婪执行一个全局正则表达式匹配,贪婪执行结果匹配所有仅由有一个单词组成的科目名输出结果替换正则表达式要匹 正则表达式的都是匹配和替换 PHP 搜索 preg_match* /** * int preg_match* ( string $pattern ,...

    mikyou 评论0 收藏0
  • PHP/JS 常用的正则达式

    摘要:正则表达式的都是匹配和替换搜索正则表达式要匹配的字符串匹配到的字符串匹配到的个数,没有匹配到返回下面是例子执行一个正则表达式匹配,非贪婪执行一个全局正则表达式匹配,贪婪执行结果匹配所有仅由有一个单词组成的科目名输出结果替换正则表达式要匹 正则表达式的都是匹配和替换 PHP 搜索 preg_match* /** * int preg_match* ( string $pattern ,...

    Simon 评论0 收藏0
  • php实战正则达式(二):提取html元素

    摘要:在阅读这篇文章前最好把同系列文章实战正则表达式一验证手机号先仔细阅读一遍。但实际上这样一个表达式是无法从上面的中提取第一个元素的这里主要的问题是在默认情况下点号字符无法匹配换行符。但是很遗憾,正则表达式中没有排除型子表达式或者说排除型分组。 这篇文章通过提取html元素介绍了正则表达式中模式修饰符、贪婪匹配与非贪婪匹配、Unicode模式、环视等知识点。在阅读这篇文章前最好把同系列文章...

    ityouknow 评论0 收藏0
  • PHP正则达式

    摘要:正则表达式是什么是一种字符串处理的工具搜索匹配搜索替换搜索分割功能强大是一种规则正则表达式应用范围数据验证数据处理过滤数据查询各语言都支持正则表达式相关函数正则表达式一个匹配返回匹配结果的次数执行一个全局正则表达式匹配返回匹配结果的次数 正则表达式是什么 是一种字符串处理的工具(搜索匹配、搜索替换、搜索分割) 功能强大,是一种规则 正则表达式应用范围 数据验证 数据处理/过滤 数...

    isaced 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<