zoukankan      html  css  js  c++  java
  • 正则指引括号

    正则指引-括号
    之前学习字符组和量词,量词是形容字符组的,但是有时候我们希望用量词来形容多个元素,

    我们可以用括号完成,我们可以使用(...)把目标元素括起来,就可以把括号内部看成一个整体,

    在括号外部使用量词,量词就会对括号内部的所有元素作用。
    用括号改变量词的作用元素:
    re.research(r"^ab+$","ab"); != none   //true
    re.research(r"^ab+$","abb"); != none   //true
    re.research(r"^(ab)+$","abb"); != none   //false
    re.research(r"^(ab)+$","abab"); != none   //true
    括号的这种能力就做分组,括号还可以配合"|"来使用,使用形式(...|...),

    在括号内用|分隔子表达式形成多选分支,分支数量没有限制,整个多选分支看成单个元素,

    只要其中某一个分支表达式匹配成功,整个表达式就匹配成功,都不能则失败。

    多选结构,一般是(..|..),但是有时候没有括号,就相当于最外边有一个括号,把整体看成一组。

    括号有了分组的功能,还有在使用括号之后,正则表达式会保存每一个分组真正的文本,

    还可以通过group(num),方法来获取匹配的文本:
    re.research(r"(\d{4})-(\d{2})-(\d{2})","2010-08-09");
    .group(1)  //2010
    .group(2)  //08
    .group(3)  //09

    在最外层还有一个隐式的括号,使用group(0)或group()获得:2010-08-09,

    分组的编号是根据开括号的出现顺序确定的,第一个出现编号的就是1,因为始终最外层还有一个隐式的括号,它的编号才是0.
    正则表达式替换:re.sub(pattern,replacement,string)
    其中parttern用来匹配被替换的文本表达式,replacement是要替换的文本,String是要被替换的文本。
    re.sub("[a-z]"," ","a1b2c3"); // 1 2 3
    在替换中使用分组:
    re.sub(r"(\d{4})-(\d{2})-(\d{2})",r"\1年\2月\3日","2010-08-09");  // 2010年08月09日
    结果是将匹配的123组替换\1\2\3。
    反向引用:
    能应用分组的子表达式匹配的文本,一般是在匹配完成之后进行,也能在匹配的正则表达式中引用,这种功能叫做反向引用:
    re.research(r"^([a-z])\1$","aa"); != none   //true
    re.research(r"^([a-z])\1$","ab"); != none   //false

  • 相关阅读:
    ADT中通过Android SDK Manager去安装x86的image时无法下载
    javadoc 生成文档注释
    char类型的字节数
    win7下JDK环境变量设置方法
    artTemplate模板引擎
    输入与输出
    后台弹出JS类
    数据库主键的设计和思考
    Windows下批处理执行MySQL脚本文件
    You know元音字母吗?
  • 原文地址:https://www.cnblogs.com/lmfeng/p/2754834.html
Copyright © 2011-2022 走看看