正则表达式(RegExp)

概述:正则表达式是一个字符串匹配利器,可以帮助我们搜索、获取、代替字符串

正则表达式主要由两部分组成:模式(patterns)和修饰符(flags)

方法

描述符

exec

一个在字符串中执行查找匹配的 RegExp 方法,它返回一个数组(未匹配到则返回 null)。

test

一个在字符串中测试是否匹配的 RegExp 方法,它返回 true 或 false。

match

一个在字符串中执行查找匹配的 String 方法,它返回一个数组,在未匹配到时会返回 null。

matchAll

一个在字符串中执行查找所有匹配的 String 方法,它返回一个迭代器(iterator)。

search

一个在字符串中测试匹配的 String 方法,它返回匹配到的位置索引,或者在失败时返回-1。

replace

一个在字符串中执行查找匹配的 String 方法,并且使用替换字符串替换掉匹配到的子字符串。

split

一个使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中 的 String 方法

修饰符flag

flag

含义

g

全部的,全部都要匹配

i

忽略大小写

m

多行匹配

规则 - 字符类

字符

含义

\d (digit)

数字:从0到9的字符

\s (space)

空格符号

\w (word)

“单字”字符,拉丁字母或者数字下划线

. (点)

它与"除换行符之外的任何字符"匹配

反向类:

  • \D 非数字:除 \d 以外的任何字符,例如字母。
  • \S 非空格符号:除 \s 以外的任何字符,例如字母。
  • \W 非单字字符:除 \w 以外的任何字符,例如非拉丁字母或空格。

规则 - 锚点

符号 ^ 和符号 $ 在正则表达式中具有特殊的意义,它们被称为“锚点”

  • 符号 ^ 匹配文本开头;
  • 符号 $ 匹配文本末尾;

词边界: \b (一下位置对应 \b)

hive 正则表达式 不包含任何符合 正则表达式不包含字符_hive 正则表达式 不包含任何符合

规则 - 转义字符串

要把特殊字符作为常规字符来使用,只需要在它前面加个反斜杠;

例如:[] \ ^ $ . | ? * + ( )

集合(Sets)和范围(Ranges)

有时候我们只要选择多个匹配字符的其中之一就可以:

  • 在方括号 […] 中的几个字符或者字符类意味着“搜索给定的字符中的任意一个”;

集合(Sets)

比如说,[eao] 意味着查找在 3 个字符 ‘a’、‘e’ 或者 `‘o’ 中的任意一个;

范围(Ranges)

  • 方括号也可以包含字符范围;
  • 比如说,[a-z] 会匹配从 a 到 z 范围内的字母,[0-5] 表示从 0 到 5 的数字;
  • [0-9A-F] 表示两个范围:它搜索一个字符,满足数字 0 到 9 或字母 A 到 F;
  • \d —— 和 [0-9] 相同;  \w —— 和 [a-zA-Z0-9_] 相同;

量词(Quantifiers)

用来形容我们所需要的数量的词被称为量词( Quantifiers )。

数量 {n}

  • 确切的位数:{5}
  • 某个范围的位数:{3,5}

缩写:

  • +:代表“一个或多个”,相当于 {1,}
  • ?:代表“零个或一个”,相当于 {0,1}。换句话说,它使得符号变得可选;
  • *:代表着“零个或多个”,相当于 {0,}。也就是说,这个字符可以多次出现或不出现;

贪婪(Greedy)和惰性(lazy)模式

贪婪模式:默认情况下的匹配规则是查找到匹配的内容后,会继续向后查找,一直找到最后一个匹配的内容

懒惰模式:懒惰模式中的量词与贪婪模式中的是相反的。  只要获取到对应的内容后,就不再继续向后匹配。

更多正则查询: https://c.runoob.com/front-end/854/

2022.0713