返回顶部
分享到

正则表达式中的特殊符号的介绍

正则表达式 来源:互联网 作者:佚名 发布时间:2025-07-19 22:06:59 人浏览
摘要

正则表达式中的特殊符号 如: 1 preg_match(/.+?hxx/is, hxx)); 返回,0,表示没有匹配,这是因为.+?的作用,具体讲一下。 .的作用 作用:匹配除换行符(\n)以外的任意单个字符。 修饰符影响:当使

正则表达式中的特殊符号

如:

1

preg_match('/.+?hxx/is', hxx));

返回,0,表示没有匹配,这是因为 .+?的作用,具体讲一下。

.的作用

  • 作用:匹配除换行符(\n)以外的任意单个字符。
  • 修饰符影响:当使用s修饰符(单行模式)时,.也能匹配换行符。

如:

1

preg_match('/a.b/', acb));

  • 有.时:可以匹配像aab、acb、a b这样的字符串,因为.可以匹配任意字符(除了换行符,除非使用s修饰符)。
  • 无.时(例如/ab/):只能匹配ab,不能匹配中间有其他字符的情况。

+的作用

  • 作用:匹配前面的子表达式一次或多次(贪婪模式,尽可能多地匹配)。
  • 组合使用:当与?组合成+?时,表示非贪婪模式(尽可能少地匹配)。

如:

1

preg_match('/a+/', aaa));

  • 有+时:可以匹配一个或多个连续的a,如a、aa、aaa等。
  • 无+时(例如/a/):只能匹配单个a,不能匹配多个。

?的作用

  • 作用:
    • 单独使用时:匹配前面的子表达式零次或一次(即前面的内容是可选的)。
    • 紧跟在量词(如*、+、?、{n}等)后面时:将贪婪模式转换为非贪婪模式(最小匹配)。

情况1:单独使用

如:

1

preg_match('/a?b/', ab));

  • 有?时:可以匹配b(因为a出现0次)或ab(a出现1次),但不能匹配aab。
  • 无?时(例如/ab/):只能匹配ab,不能匹配b。

情况2:作为非贪婪修饰符(与量词组合)

如:

1

preg_match('/a+?b/', aab));

  • 有?(非贪婪模式)时:在字符串aaab中,会匹配aab(因为+?会尽可能少地匹配,只匹配一个a,然后遇到b就停止)。
  • 无?(贪婪模式)时:在字符串aaab中,会匹配整个aaab(因为+会尽可能多地匹配)。

*的作用

  • 有\*: 允许前面的元素出现0次或多次。即该元素可以没有,也可以重复多次。
  • 无\*: 前面的元素必须恰好出现一次(如果没有其他量词修饰的话)。

如:

1

2

3

preg_match('/ab*c/', 'ac');    // 匹配 "ac"(b出现0次)

                               // 匹配 "abc"

                               // 匹配 "abbbbc"

^的作用

作用:

  • 匹配字符串的开始位置
  • 在多行模式(m 修饰符)下也匹配每行的开头

如:

1

2

preg_match('/^abc/', 'abc');     //匹配 "abc123"

                                //不匹配 "123abc"

$的作用

作用

  • 匹配字符串的结束位置
  • 在多行模式(m 修饰符)下也匹配每行的结尾

如:

1

2

preg_match('/abc$/', 'abc');     //不匹配 "abc123"

                                //匹配 "123abc"

综合对比表

元字符 示例表达式 匹配行为 示例输入 匹配结果
. /a.b/ 匹配任意单个字符(除换行符) aXb 匹配aXb
无. /ab/ 只能匹配字面ab aXb 不匹配
+ /a+/ 匹配1个或多个a aaa 匹配整个aaa
无+ /a/ 只能匹配单个a aaa 只匹配第一个a
?(单独) /a?b/ a出现0次或1次 b 匹配b
无? /ab/ 只能匹配ab b 不匹配
+? /a+?b/ 非贪婪匹配:尽可能少地匹配a aaab 匹配aab(从第二个a开始)
+(无?) /a+b/ 贪婪匹配:尽可能多地匹配a aaab 匹配整个aa
^ /^a/ 匹配出现在开头的a a 匹配到了开头的 a

总结

就是最近经常遇到一些这类的 特殊符号,搞不懂什么意思,网上也没有很全面的教程,就问al,自己总结了一下。


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计