正则表达式语法学习

正则表达式

描述了一种字符串匹配的模式。可以用来检查一个串是否包含有某个子串,将匹配的子串替换、从某个串中取出符合条件的子串等

普通字符

  1. [ABC]
    匹配[...]中所有的字符

  2. [^ABC]
    匹配除了[...]中字符的所有字符

  3. [A-Z]
    表示一个区间,匹配所有大写字母,[a-z]表示所有小写字母

  4. .
    匹配除了换行符(\n、\r) 之外的任何单个字符,相当于/[^\n\r]/

  5. [\s\S]
    匹配所有,\s 是匹配所有空白符、包括换行,
    \S 非空白符,不包括换行

  6. \w
    匹配字母、数字、下划线。等价于[A-Za-z0-9_]

特殊字符

  1. $
    匹配输入字符串的结尾位置

  2. ()
    标记一个子表达式的开始和结束位置

    • 大于等于0 次
      表示前面的字符可以不出现、出现一次或多次(0次、1次、多次)
    • 大于等于1 次
      表示前面的字符必须至少出现一次(1次或多次)
  3. ? 等于0 或1 次
    表示前面的字符最多只出现一次(0次或1次)

  4. ^
    匹配输入字符串的开始位置,除非在放括号表达式中使用,当该符号在方括号表达式中使用是,表示不接受该方括号表达式的字符集合,

  5. {
    标记限定符表达式的开始

  6. |
    指明两项之间的一个选择,

限定符

匹配前面子表达式零次或多次,例如,zo* 能匹配'z'以及'zoo',等价于{0,}

匹配前面的子表达式 一次或多次,例如,zo+ 能匹配zo和zoo 但是不能匹配z 等价于{1,}

  1. ?
    匹配前面的子表达式零次或1次,例如 do(es)? 可以匹配do、does、doxy ? 等价于

  2. {n}
    n是个非负整数,匹配确定的n 次,例如o{2} 不能匹配Bob 中的o,但是能匹配food中的两个oo

  3. {n,}
    n是个非负整数,至少匹配n次,例如,0{2,} 不能匹配Bob 中的o, 但能匹配 foooood 中所有o 。o{1,} 等价于o+ ,而o{0,} 等价于o*

  4. {n,m}
    m和n均为非负整数,其中n<=m ,最少匹配n次和最多匹配m次,例如 o{1,3} 将匹配 foooooood
    中钱三个ooo ,o{0,1} 等价于0? ,请注意逗号在两个数之间不能有空格。

案例

  1. /<.*>/ 贪婪

  2. /<.*?>/ 非贪婪

  3. /<\w+?>/

定位符

使您能够将正则表达式固定在行首或行尾。

定位符用来描述字符串或单词的边界,^和$ 分别指字符串的开始和结束,\b 描述单词的前或后边界,\B表示非单词边界。

  1. ^ 匹配输入字符串开始的位置
  2. $ 匹配输入字符串结尾的位置
  3. \b 匹配一个单词边界,即字与空格间的位置
  4. \B 非单词边界匹配

注意: 不能将限定符与定位符一起使用

反向应用

捕获的表达式,正如 [a-z]+ 指定的,包括一个或多个字母。正则表达式的第二部分是对以前捕获的子匹配项的引用,即,单词的第二个匹配项正好由括号表达式匹配。\1 指定第一个子匹配项。
单词边界元字符确保只检测整个单词。否则,诸如 "is issued" 或 "this is" 之类的词组将不能正确地被此表达式识别。
正则表达式后面的全局标记 g 指定将该表达式应用到输入字符串中能够查找到的尽可能多的匹配。
表达式的结尾处的不区分大小写 i 标记指定不区分大小写。

修饰符(标记)

  1. i
    不区分大小写
  2. g
    全局匹配
  3. m
    多行匹配
  4. s
    特殊字符圆点. 中包含换行符\n
posted @ 2022-04-21 15:56  会吃鱼的猫123  阅读(47)  评论(0编辑  收藏  举报