zoukankan      html  css  js  c++  java
  • 回溯引用:前后一致匹配

    1、查询一个字符串的重复

    回溯引用指的是模式的后半部分引用在前半部分中定义的子表达式。 可以把回溯引用想象成变量。

    回溯引用只能用来引用模式里的子表达式,用(和)括起来的正则表达式片段

    This is a block of of text,several words here are are repeated,and and they should not be
    
    正则表达式:[ ]+(w+)[ ]+1
    匹配结果:共找到2处匹配
    of of 
    are are

    [ ]+匹配一个或多个空格,
    w+匹配一个或多个字母数字下划线字符,等价于[a-zA-Z0-9_]+
    (w+)是一个子表达式,这个子表达式不是用来进行重复匹配的,只是把整个模式的一部分单独划分出来以便在后面引用。
    1这是一个回溯引用,而它引用的正是前面划分出来的子表达式(即子表达式:(w+)  )。
    1到底代表什么,它代表着模式里的第一个子表达式,2代表着模式里的第二个子表达式,3代表着模式里的第三个子表达式;以此类推。
    [ ]+(w+)[ ]+1将匹配同一个单词的连续两次重复出现,而且前面一个是一个单独的词,至少前面有一个空格
    
    
    正则表达式(w+)[ ]+1
    匹配结果:共找到4处匹配
    is is
    of of
    are are
    and and

    2、html标签开始与结束的匹配(忽略任何不配对的标签组合)

    <BODY>
    <H1>welcome to my Homepage</H1>
    Content is divided into two sections:<BR>
    <H2>ColdFusion</H2>
    Information about Macromedia ColdFusion.
    <H2>wireless</H2>
    information about Bluetooth,802.11,and more .
    <H2>This is not valid HTML</H3>
    </BODY>
    
    正则表达式:<H([1-6])>.*?</H1>
    
    匹配结果:共找到3处匹配
    <H1>welcome to my Homepage</H1>
    <H2>ColdFusion</H2>
    <H2>wireless</H2>

    <H([1-6])>匹配任何一级标题的开始标签,
    ([1-6])第一个子表达式
    1匹配第一个子表达式(即子表达式([1-6]) ,1只匹配前面子表达式对应的相同的数字。例如前面子表达式结果是2,则后面1也就只能匹配2,即<H2>开头,</H2>结尾。)

     3、回溯引用在替换操作中的应用

    把文本里的电子邮件地址查找出来,全部替换为可点击的链接

    Hello,ben@forta.com is my email address.
    
    正则表达式:(w+[w.]*@[w.]+.w+)
    
    替换文本:<A HREF="maito:$1">$1</A>
    
    替换结果:Hello,<A HREF="maito:ben@forta.com">ben@forta.com</A> is my email address.

    注意上面是用:$替换,JavaScript中要这么替换。还有同一个子表达式可以被引用多次,只要在需要用到它的地方写出它的回溯引用就可以了。
    回溯引用可以跨模式使用,在第一个模式里被匹配的子表达式可以用在第二个模式里。

    把用户数据库里某个字段信息重新排版

    313-555-1234
    248-555-9999
    810-555-9000
    正则表达式:(d{3})(-)(d{3})(-)(d{4})
    替换:($1)$3-$5
    替换结果:
    (313)555-1234
    (248)555-9999
    (810)555-9000

    (d{3})(-)(d{3})(-)(d{4})有5个子表达式,只用了其中的1/3/5子表达式。
  • 相关阅读:
    MongoDB 创建数据库
    MongoDB
    MongoDB 概念解析
    window平台安装 MongoDB(二)
    MongoDB入门学习(1)
    解决DevExpress10.2.4版本在VS2012工具箱控件不显示的问题
    Aspose.Word 输出表格后空格字符丢失的解决方法
    ArcEngine 创建空间参考设置默认域
    SPATIALITE 各版本数据库差异
    WGS84投影的WKID说明
  • 原文地址:https://www.cnblogs.com/ccgjava/p/7367778.html
Copyright © 2011-2022 走看看