一文详解正则表达式中的特殊符号

作者:

文章目录
  • 如: preg_match(‘/.+?hxx/is’, hxx)); 返回,0,表示没有匹配,这是因为 .+?的作用,具体讲一下。
  • 作用:匹配除换行符(n)以外的任意单个字符。 修饰符影响:当使用s修饰符(单行模式)时,.也能匹配换行符。 如: preg_match(‘/a.b/’, acb)); 有.时:可以匹配像aab、acb、a b这样的字符串,因为.可以匹配任意字符(除了换行符,除非使用s修饰符)。 无.时(例如/ab/):只能匹配ab,不能匹配中间有其他字符的情况。
  • 作用:匹配前面的子表达式一次或多次(贪婪模式,尽可能多地匹配)。 组合使用:当与?组合成+?时,表示非贪婪模式(尽可能少地匹配)。 如: preg_match(‘/a+/’, aaa)); 有+时:可以匹配一个或多个连续的a,如a、aa、aaa等。 无+时(例如/a/):只能匹配单个a,不能匹配多个。
  • 作用: 单独使用时:匹配前面的子表达式零次或一次(即前面的内容是可选的)。 紧跟在量词(如*、+、?、{n}等)后面时:将贪婪模式转换为非贪婪模式(最小匹配)。
  • 有*: 允许前面的元素出现0次或多次。即该元素可以没有,也可以重复多次。 无*: 前面的元素必须恰好出现一次(如果没有其他量词修饰的话)。 如: preg_match(‘/ab*c/’, ‘ac’); // 匹配 “ac”(b出现0次) // 匹配 “abc” // 匹配 “abbbbc”
  • 作用: 匹配字符串的开始位置 在多行模式(m 修饰符)下也匹配每行的开头 如: preg_match(‘/^abc/’, ‘abc’); //匹配 “abc123” //不匹配 “123abc”
  • 作用 匹配字符串的结束位置 在多行模式(m 修饰符)下也匹配每行的结尾 如: 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,自己总结了一下。 到此这篇关于正则表达式中特殊符号的文章就介绍到这了,更多相关正则表达式特殊符号内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: 正则表达式(RegExp)判断文本框中是否包含特殊符号 正则表达式中特殊符号及正则表达式的几种方法总结(replace,test,search) php中正则表达式中的特殊符号
  • 目录
    • 正则表达式中的特殊符号
    • .的作用
    • +的作用
    • ?的作用
      • 情况1:单独使用
      • 情况2:作为非贪婪修饰符(与量词组合)
    • *的作用
      • ^的作用
        • $的作用
          • 综合对比表
            • 总结

              如:

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

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

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

              如:

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

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

              如:

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

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

              如:

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

              如:

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

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

              如:

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

              作用:

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

              如:

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

              作用

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

              如:

              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,自己总结了一下。

              到此这篇关于正则表达式中特殊符号的文章就介绍到这了,更多相关正则表达式特殊符号内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

              您可能感兴趣的文章:

              • 正则表达式(RegExp)判断文本框中是否包含特殊符号
              • 正则表达式中特殊符号及正则表达式的几种方法总结(replace,test,search)
              • php中正则表达式中的特殊符号

              站内搜索