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子表达式。
  • 相关阅读:
    SAP生产订单屏幕增强(CO01/CO02/CO03抬头AUFK,AFKO)
    SpringBoot发布web service接口,并使用ABAP调用web service
    ABAP使用OLE导出Excel
    SAP PI在java8及以上环境无法进入Enterprise Services Builder 或 Integration Builder的问题
    在spring boot中使用sapjco3,并用docker部署到Linux服务器
    在ABAP中使用自增ID
    博客园CSS样式
    F-02 BAPI_ACC_DOCUMENT_POST交易货币余额
    字符串后#号导致导出excel换行问题
    HR人员和岗位关联日期问题
  • 原文地址:https://www.cnblogs.com/ccgjava/p/7367778.html
Copyright © 2011-2022 走看看