PHP 正则相关函数

PHP Regular expression

本来 PHP 支援两类 regular expression, 一种为 POSIX-style 相关函数名称包含 ereg, 一种为 Perl-style 相关函数名称包含 preg, 自 PHP 5.3 後 POSIX-style 相关函数就弃用了, 现在主要用 Perl-style 相关函数, 这些函数的模式语法与 perl 相当类似, 表达式用分隔符包起来, 例如分隔符使用 "/", 分隔符可以用非字母、非数字、非空白、非""以外的字符表示, 结束分隔符後面是模式修饰符(Pattern Modifiers), 常见模式修饰符有, i 表大小写不敏感, m 目标字串视为多行

规则

/*
Meta-characters(元字符)
\ 转义字符
^ 开始位置
$ 结束位置
. 除换行外符外的任何字符
[ 开始字符类定义
] 结束字符类定义
| 可选分支
( 开始子模式
) 结束子模式
? 量词, 表 0 次或 1 次, 位於量词後用於改变量词的贪婪性
* 量词, 0 或 多次
+ 量词, 1 或 多次
{ 自定义量词开始标记
} 自定义量词结束标记

Meta-characters 在方括号里面
\ 转义字符
^ 仅在作为第一个字符, 表明字符类取反
- 标记字符范围
*/ 
$pattern = '/[a,b]/';  // 匹配 a b 两种字符
$pattern = "/[0-9]/"; // 匹配数字0-9
$pattern = "/^cat/";  // 匹配 cat 当开头

preg_match

/*
preg_match(
    string $pattern,  要匹配的模式
    string $subject,  输入字串
    array &$matches = null, 如果提供这个参数, 会被填充为匹配结果, 
                            $matches[0] 完整模式匹配到的内容, $matches[1] 子模式匹配到的内容
    int $flags = 0,  唯一标记值, 可设为 PREG_OFFSET_CAPTURE, PREG_UNMATCHED_AS_NULL, 
    int $offset = 0  指定目标字串某个位置开始匹配
): int|false  
*/
$str = 'abcdef';
$pattern = '/cd/';
var_dump(preg_match($pattern, $str, $match));
var_dump($match);

<<:  [D06] placeholder

>>:  Day 06 Use automated machine learning in Azure Machine Learning

@Day23 | C# WixToolset + WPF 帅到不行的安装包 [87分帅的WPF外观]

要 厉害的WPF安装画面, 除了凭空想像外, 我们来看别人怎麽弄得 WixToolset 的 安装画...

30-16 之 DataSource Layer - RowDataGateway

这篇文章我们将说来谈谈《 Patterns of Enterprise Application Ar...

进击的软件工程师之路-软件战斗营 第十三周

学习进度 资料结构 泛型 通配字元 Android Studio RecyclerView Recy...

Day24 - 抽取 js 共用元件

Case01 与 Day23 范例的差异,就是把 js fetch 的语法 extract 成 fu...

Day26 - 轻前端 Component - jQuery UI Selectmenu

这个范例把上个范例的 jQuery UI Selectmenu 放到 vue component 内...