zoukankan      html  css  js  c++  java
  • 正则表达式组成

    A:字符
    x 字符 x。举例:'a'表示字符a
    \ 反斜线字符
    新行(换行)符 ('u000A')
    回车符 ('u000D')

    B:字符类
    [abc] a、b 或 c(简单类)
    [^abc] 任何字符,除了 a、b 或 c(否定)
    [a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围)
    [0-9] 0到9字符串都包括

    C:预定义字符串
    . 任何字符(与行结束符可能匹配也可能不匹配) 。我就是.字符本身,怎么表式呢?.
    d 数字:[0-9]
    w 单词字符:[a-zA-Z_0-9]
    在正则表达式里面组成单词的东西必须有这些东西组成

    D:边界匹配器
    ^ 行的开头
    $ 行的结尾
     单词边界
    就是不是单词字符的地方
    举例:hello world?haha;xixi

    E:Greedy 数量词
    X? X,一次或一次也没有
    X* X,零次或多次
    X+ X,一次或多次
    X{n} X,恰好 n 次
    X{n,} X,至少 n 次
    X{n,m} X,至少 n 次,但是不超过 m 次

    https://blog.csdn.net/L1585931143/article/details/53366342

     

    正则表达式小括号作用

    1.正则表达式中的圆括号的作用是对字符进行分组,并保存匹配的文本。

    2.圆括号用法I:对字符或元字符进行分组,这样在圆括号内就可以对字符组合使用限定符。

        eg. 匹配A+一个数字+A+一个数字:(Ad){2}

    3.圆括号用法II:表示可选择性。

        3.1 从两个直接量中选择一个

           eg. gr(a|e)y匹配gray和grey,该例子还可以使用gr[ae]y,字符类效率更高。

        3.2 从多个直接量中选择

           eg. (Doctor|Dr.?)匹配Doctor,Dr,Dr.三种情况

        3.3 错误匹配的交替行为,

           使用交替行为时,有时会出现意想不到的错误。

           eg. 用(a|ab)匹配ab时,只能匹配a,但是如果用(ab|a),则可以匹配ab

    4.捕获圆括号:正则表达式中,与位于圆括号之间的模式匹配的内容都会被捕获。

        4.1 当模式中有嵌套的圆括号时,变量的编号会按照圆开括号出现的位置一次进行。

        eg. ([A-Za-z](d{2}))((-)d{2})匹配”A22-33”时,匹配情况如下:

    Group 1:   A22

    Group 2:   22

    Group 3:   -33

    Group 4:   -

        4.2 .NET中,可以创建命名的组,语法为:

           (?<组名>模式)或(?’组名’模式)

           eg. (?<FirstLetter>w(?'Num'd{2}))((-)d{2})匹配” A22-33”情况为:

            Group "FirstLetter": A22

    Group "Num":  22

    Group 1:   -33

    Group 2:   -

        4.3 非捕获的圆括号:.NET和JavaScript都提供了非捕获圆括号的功能,即圆括号的内容不作为捕获对象,当圆括号中的内容不是想捕获的对象时,采用非捕获圆括号可以提高匹配效率。语法为:

           (?:the-non-captured-content)

           eg. (w(?:d{2}))((?:-)d{2})匹配” A22-33”情况如下:

            Group 1:   A22

    Group 2:   -33

    注:d{2}匹配的”22”没有被捕获

    5.反向引用(backreferences)

        语法:.NET和javascript中,表示匹配第一组的变量被指定为”1”

        能够体现反向引用的便利性的一种情况是找到句子中重复的单词。

        eg. 查找下列句子中重复的单词:

    I think that that is often overdone.

    This sentence contains contains a doubled word or two two.

    我们用([A-Za-z]+) +1来匹配,红色部分为匹配的结果

           在这个匹配模式中([A-Za-z]+)为匹配的第一组变量,后面加一个或多个空格( +)表示单词间隔,

           然后用”1”来表示第一组匹配的变量(即[A-Za-z]+匹配的内容),最后一个表示单词的结束()

    https://www.cnblogs.com/keyi/p/7454658.html

  • 相关阅读:
    排序算法整理
    V-REP Plugin 开发
    YAML-CPP
    YAML
    V-REP Remote API
    V-REP Plugin
    结构化方法与面向对象方法的比较
    敏捷软件开发vs传统软件工程
    个人项目-地铁出行路线规划程序
    Week1个人作业
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/9193527.html
Copyright © 2011-2022 走看看