• 正则表达式 


    引用网上一段话:

     是正则表达式规定的一个特殊代码(好吧,某些人叫它元字符,metacharacter),代表着单词的开头或结尾,也就是单词的分界处。虽然通常英文的单词是由空格,标点符号或者换行来分隔的,但是  并不匹配这些单词分隔字符中的任何一个,它只匹配一个位置。

    如果需要更精确的说法, 匹配这样的位置:它的前一个字符和后一个字符必须是w (字母数字)和 W (非字母数字),即匹配必须出现在 w (字母数字)和 W (非字母数字)字符之间的边界上。

    属于匹配位置的元字符,一般作占位作用,而不被捕获,同属于匹配位置的还有匹配行起始位^和行结束位$

    很多人不怎么理解正则中的  含义,看到上面一段话后,很多人还是不怎么理解  究竟是怎样的一个“位置”。

    今天就来说说我的理解。

    什么是位置

    It's a nice day today.

    'I' 占一个位置,'t' 占一个位置,所有的单个字符(包括不可见的空白字符)都会占一个位置,这样的位置我给它取个名字叫“显式位置”。

    注意:字符与字符之间还有一个位置,例如 'I' 和 't' 之间就有一个位置(没有任何东西),这样的位置我给它取个名字叫“隐式位置”。

    “隐式位置”就是  的关键!通俗的理解, 就是“隐式位置”。

    此时,再来理解一下这句话:

    如果需要更精确的说法, 匹配这样的位置:它的前一个字符和后一个字符不全是(一个是,一个不是或不存在) w。

    我用我的话来翻译一下这句话:

    “隐式位置” ,匹配这样的位置:它的前一个“显式位置”字符和后一个“显式位置”字符不全是 w。

    此刻,有没有一种豁然开朗的感觉?有么有?有么有?有么有?

    实例讲解

    就用 "It's a nice day today." 举例说明:

    正确的正则:nice

    分析:第一个  前面一个字符是空格,后面一个字符是 'n',不全是 w,所以可以匹配出 'n' 是一个单词的开头。第二个  前面一个字符是 'e',后面一个字符是空格,不全是 w,可以匹配出 'e' 是一个单词的结尾。所以,合在一起,就能匹配出以 'n' 开头以 'e' 结尾的单词,这里就能匹配出 "nice" 这个单词。

    错误的正则:anice

    分析:我见过有人类似于这样来写正则,想要达到的目的是匹配出上一个单词以 'a' 结尾,下一个单词以 'n' 开头的部分,这里想匹配出 "a nice"。但是这个正则表达的可不是这个目的, 前面是字符 'a',后面是字符 'n',两个都是“显式字符”,显然违背了  的含义,所以这就是个错误的表达式,匹配不出任何东西。想要匹配出 "a nice",正确的正则写法是:a.nice(不能换行)

    转载:https://www.cnblogs.com/litmmp/p/4925374.html

  • 相关阅读:
    【BZOJ】1710: [Usaco2007 Open]Cheappal 廉价回文
    【BZOJ】3302: [Shoi2005]树的双中心 && 2103: Fire 消防站 && 2447: 消防站
    【BZOJ】1706: [usaco2007 Nov]relays 奶牛接力跑
    【Atcoder】CODE FESTIVAL 2017 qual A D
    【BZOJ】3038: 上帝造题的七分钟2 && 3211: 花神游历各国
    【BZOJ】1707: [Usaco2007 Nov]tanning分配防晒霜
    【BZOJ】1754: [Usaco2005 qua]Bull Math
    【BZOJ】1584: [Usaco2009 Mar]Cleaning Up 打扫卫生
    【BZOJ】1828: [Usaco2010 Mar]balloc 农场分配(经典贪心)
    【BZOJ】1709: [Usaco2007 Oct]Super Paintball超级弹珠
  • 原文地址:https://www.cnblogs.com/oneDongHua/p/14264050.html
Copyright © 2020-2023  润新知