本来 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(
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);
>>: Day 06 Use automated machine learning in Azure Machine Learning
要 厉害的WPF安装画面, 除了凭空想像外, 我们来看别人怎麽弄得 WixToolset 的 安装画...
这篇文章我们将说来谈谈《 Patterns of Enterprise Application Ar...
学习进度 资料结构 泛型 通配字元 Android Studio RecyclerView Recy...
Case01 与 Day23 范例的差异,就是把 js fetch 的语法 extract 成 fu...
这个范例把上个范例的 jQuery UI Selectmenu 放到 vue component 内...