zoukankan      html  css  js  c++  java
  • 正则表达式之捕获重用

    正则表达式中可以进行重用的表达方式

    (x)

    匹配 'x' 并且记住匹配项,就像下面的例子展示的那样。括号被称为 捕获括号。

    模式/(foo) (bar) 1 2/中的 '(foo)' 和 '(bar)' 匹配并记住字符串 "foo bar foo bar" 中前两个单词。模式中的 1 和 2 匹配字符串的后两个单词。注意 1、2、 是用在正则表达式的匹配环节。在正则表达式的替换环节,则要使用像 $1、$2、$n 这样的语法,例如,'bar foo'.replace( /(...) (...)/, '$2 $1' )。

    (?:x)

    匹配 'x' 但是不记住匹配项。这种叫作非捕获括号,使得你能够定义为与正则表达式运算符一起使用的子表达式。来看示例表达式 /(?:foo){1,2}/。如果表达式是 /foo{1,2}/,{1,2}将只对 ‘foo’ 的最后一个字符 ’o‘ 生效。如果使用非捕获括号,则{1,2}会匹配整个 ‘foo’ 单词。

    例子讲解:

    /(?:d{3}|(d{3}))([-/.])d{3}1d{4}/; 
    

     (?:d{3}|(d{3})) 表示不记住捕获

     ([-/.])表示记住捕获

      1表示重用前面捕获到的格式,1表示第一个捕获到的,2表示第二个捕获到的

    所以符合该正则表达式的数据为 (123)-123-1234 或者 123-123-1234

    在线正则表达式测试

  • 相关阅读:
    14.会场安排问题(L4)
    图形化调试工具DDD
    sking
    全排列
    DNS
    一种排序
    多边形重心问题
    街区最短路径问题
    Fibonacci数
    python url解析
  • 原文地址:https://www.cnblogs.com/afel/p/9293036.html
Copyright © 2011-2022 走看看