博客
关于我
php正则表达式的特殊字符含义
阅读量:794 次
发布时间:2023-03-01

本文共 2260 字,大约阅读时间需要 7 分钟。

正则表达式是文本处理领域的强大工具,但其特殊字符和语法可能让初次接触的人感到困惑。本文将详细解析正则表达式中常见的特殊字符及其含义,帮助读者更好地理解和应用这些工具。

1. 特殊字符解析

1.1 ^ - 匹配开头

^ 表示匹配字符串的开头位置。例如,^A 只会匹配以 "A" 开头的字符串,而不会匹配 "aA" 或 "An A"。

1.2 $ - 匹配结尾

$ 表示匹配字符串的结尾位置。例如,t$ 只会匹配以 "t" 结尾的字符串,如 "eat" 或 "bat"。

1.3 * - 零或多次重复

* 表示前面的字符可以出现零次或多次,相当于 \{0,\}。例如,bo* 可以匹配 "b"、"bo"、"boo" 或 "boom"。

1.4 + - 至少一次重复

+ 表示前面的字符至少出现一次,相当于 \{1,\}。例如,a+ 可以匹配 "a"、"aa"、"aaa" 等。

1.5 ? - 零或一次重复

? 表示前面的字符可以出现零次或一次,相当于 \{0,1\}。例如,e?le? 可以匹配 "el" 或 "le"。

1.6 . - 匹配任意字符

. 匹配除换行符外的任意单个字符。要匹配包含换行符的字符,请使用 [.\n]

1.7 () - 分组

() 用于将表达式分组。括号内的内容会被单独作为一个匹配结果。例如,(foo) 记录了 "foo" 这个子串。

1.8 (?:) - 非捕获组

(?:) 用于非捕获组,表示括号内的内容不会被单独记录。常用于组合多个表达式,如 (z|f)ood 匹配 "zood" 或 "food"。

1.9 (?=) - 正向预查

(?=pattern) 在匹配 pattern 的前提下进行查找,不消耗字符。例如,(?=\d) 匹配数字前的一个位置。

1.10 (?!) - 负向预查

(?!pattern) 在不匹配 pattern 的前提下进行查找,不消耗字符。例如,(?!^) 用于排除以 ^ 匹配的字符串。

1.11 | - 或的关系

| 表示匹配左边或右边的表达式。例如,z|food 匹配 "z" 或 "food"。

1.12 [ ] - 字符集合

[ ] 表示匹配集合内的任意字符。例如,[abcd] 匹配 "a"、"b"、"c" 或 "d"。可以使用连字符 - 指定范围,如 [a-c] 匹配 "a" 到 "c" 之间的字符。

1.13 \b - 单词边界

\b 匹配单词边界,即单词与空格之间的位置。例如,er\b 匹配 "er" 在单词末尾的位置,如 "never" 中的 "er"。

1.14 \B - 非单词边界

\B 匹配非单词边界,如单词中的 "er",如 "verb" 中的 "er"。

1.15 \c - 控制字符

\cX 匹配指定的控制字符 X。例如,\cM 匹配 Control-M 或回车符。

1.16 \d - 数字字符

\d 匹配任意数字字符,等价于 [0-9]。例如,\d 匹配 "2" 在 "B2 is..." 中。

1.17 \D - 非数字字符

\D 匹配任意非数字字符,等价于 [^0-9]。例如,\D 匹配 "B" 在 "B2 is..." 中。

1.18 \f - 换页符

\f 匹配换页符 \x0c,等价于 \cL

1.19 \n - 换行符

\n 匹配换行符 \x0a,等价于 \cJ

1.20 \r - 回车符

\r 匹配回车符 \x0d,等价于 \cM

1.21 \s - 空白字符

\s 匹配任意空白字符,包括空格、制表符、换页符等。等价于 [ \f\n\r\t\v]

1.22 \S - 非空白字符

\S 匹配任意非空白字符,等价于 [^ \f\n\r\t\v]

1.23 \t - 制表符

\t 匹配制表符 \x09,等价于 \cI

1.24 \v - 垂直制表符

\v 匹配垂直制表符 \x0b,等价于 \cK

1.25 \w - 单词字符

\w 匹配包括下划线的任意单词字符,等价于 [A-Za-z0-9_]。例如,\w 匹配 "a"、"5" 或 "_"。

1.26 \W - 非单词字符

\W 匹配任意非单词字符,等价于 [^A-Za-z0-9_]

1.27 \x - 十六进制转义值

\xNN 匹配十六进制转义值 NN 对应的ASCII字符。例如,\x41 匹配 "A"。

1.28 \n - 后向引用或八进制转义值

\n 可以表示后向引用或八进制转义值。如果前面有 n 个捕获子表达式,则匹配第 n 个捕获值。如果 n 是八进制数字,则匹配对应的字符。

1.29 \num - 数字引用

\num 匹配 num 对应的数字引用。例如,(.) 匹配任意单个字符,并将其存储为子匹配。

1.30 \un - Unicode转义值

\unNN 匹配用四个十六进制数字表示的Unicode字符。例如,\u00A9 匹配版权符号 ©

2. 实际应用示例

以下是一个完整的正则表达式示例: /apple(, )sorange1/

这个表达式将匹配 "apple, orange, cherry, peach." 中的 "apple, orange"。

3. 注意事项

  • 正则表达式的语法复杂,建议在编辑器中测试。
  • 对于特殊字符,请谨慎使用,避免误匹配。
  • 使用正则表达式时,注意性能问题,特别是在处理大量文本时。

通过掌握这些特殊字符的含义和用法,读者可以更高效地使用正则表达式来处理各种文本数据。

转载地址:http://gttfk.baihongyu.com/

你可能感兴趣的文章
PHP加密与安全的最佳实践
查看>>
PHP区分 企业微信浏览器 | 普通微信浏览器 | 其他浏览器
查看>>
php原生代码怎么连表查询,PHP tp5中使用原生sql查询代码实例
查看>>
PHP去掉转义符
查看>>
php去除字符串开头或末尾的字符(例如逗号)
查看>>
php反射api
查看>>
PHP反射ReflectionClass、ReflectionMethod 入门教程
查看>>
PHP反射机制
查看>>
php取当天的最后一秒_Docker快速搭建PHP开发环境详细教程
查看>>
php取绝对值
查看>>
PHP变量内容的获取
查看>>
php各种常用的算法
查看>>
php各种缓存策略对比
查看>>
RabbitMQ高级特性 - 消息分发(限流、负载均衡)
查看>>
php后台“爬虫”模拟登录第三方系统
查看>>
php后台的在控制器中就可以实现阅读数增加
查看>>
php命令行生成项目结构
查看>>
php命名空间
查看>>
PHP命名空间带来的干扰
查看>>
PHP和MySQL Web开发从新手到高手,第1天-搭建PHP开发环境
查看>>