PHP 正则表达式
2018.1.22
1. 语法规则
行定位符: “^”表示行首。“$” 表示行尾。
单词定界符:
“\b”表示匹配完整单词,而非单词的一部分。 如 \btm\b, 表示必须寻找 单独的单词tm
“\B”表示匹配的不能是完整的一个单词。与\b 相反。
字符类:
[ ] .只要匹配的字符出现在方括号内,则表示匹配成功。
注意: 一个方括号只能匹配一个字符。
应用: 用来匹配不区分大小写的单词,如 [tT][mM].
预定义字符类,包含POSIX和PCRE风格的。
选择字符: "|"
理解为 “或”。如: (t|T)(m|M);
和[]的区别: []只能匹配单个字符,而 | 可以匹配任意长度的字串。如 tm|tM|Tm|TM
连字符: "-"
如 [a-zA-Z];
排除字符: “^”
将 “^” 放在方括号中,表示排除。 如 [^a-zA-Z], 表示非字母字符。
限定符 (?* + {n ,m})
意思分别为: 匹配前面的字符
0或1 次, 0 或多次, 1 或 多次,n 到m次。
点号字符 (.)
匹配任意一个除了换行符之外的字符。
如,^r.s.*t$, 表示 以r 开头, 第三个字符是s, 最后一个字符是t 的字串。
转义字符 (\)
将特殊字符,如 “.” “?”,“\”等 转义。
反斜线 (\)
除了转义字符外,还有其他功能。(此部分内容过于细节,待有空再仔细研究)
将一些不可打印的字符显示出来。
指定的预定义字符集。
定义断言。
反向引用和模式修饰符,待需要时再补充。
——————————————————————————————更新于 2018.1.25
POSIX扩展正则表达式
以下函数具体作用可参考 http://php.net/manual/zh/ref.regex.php
bool ereg/eregi (string pattern, string str [,array regs]);
string ereg_replace/eregi_replace ( string $pattern
, string $replacement
, string $string
);
array split/spliti ( string $pattern
, string $string
[, int $limit
] );
PCRE兼容正则表达式函数
以下具体函数作用 可参考 http://php.net/manual/zh/function.preg-grep.php;
array preg_grep ( string $pattern
, array $input
[, int $flags
= 0 ] );
int preg_match ( string $pattern
, string $subject
[, array &$matches
[, int $flags
= 0 [, int $offset
= 0 ]]] )
int preg_match_all ( string $pattern
, string $subject
[, array &$matches
[, int $flags
= PREG_PATTERN_ORDER
[, int$offset
= 0 ]]] )
string preg_quote ( string $str
[, string $delimiter
= NULL
] )
mixed preg_replace ( mixed $pattern
, mixed $replacement
, mixed $subject
[, int $limit
= -1 [, int &$count
]] )
mixed preg_replace_callback ( mixed $pattern
, callable $callback
, mixed $subject
[, int $limit
= -1 [, int &$count
]]
array preg_split ( string $pattern
, string $subject
[, int $limit
= -1 [, int $flags
= 0 ]] )