什么是正则表达式的反向引用?其作用是什么?

JavaScript016

什么是正则表达式的反向引用?其作用是什么?,第1张

比方我要找两个连在一起的词abcabc,就要用

(abc)\1

\1就是反向引用,\n指同一个正则表达式的第n个捕获

反向引用还在替换的时候有用,比方我要用第一个词替换整句话

this is a test

replace("(\w+).*", "\1")

完整的正则表达式由两种字符构成:

通俗理解: 根据语言的规则,按照语法把单词组合起来,就会得到能传达思想的文本。

思维架构: 完整的正则表达式由小的构建模块单元组成。

Example One:

Example Two:

Example Three:

应用场景: 我们需要搜索的单词是 "grey" ,同时又不确定是否写作 "gray" ,就可以使用 正则表达式结构体[...] gr[ea]y )。它容许使用者列出某处期望匹配的字符,通常被称作 字符组

- : 连字符表示一个范围: <H[123456]> 等同于 <H[1-6]>

注意:

作用: [^ ... ] 替代 [...] , 这个字符组就会 匹配一个未列出的字符 。字符组中开头的 ^ 表示 "排除"

注意: 排除元字符必须紧挨在 [ 之后,连接元字符 - 紧挨在排除元字符 ^ 之后也算作连接元字符

作用: 元字符 . 是用来匹配任意字符的字符组的简便写法

概念: | 是一个简捷的元字符,它的意思是 ,能够把不同的子表达式组合成一个总的表达式,而这个总的表达式又能够匹配任意的子表达式。

注意: | 配合 () 可以限制代表子表达式的界限

Example:

元字符 代表可选项。它只作用于之前紧邻的元素 (单个元素 或 使用 () 限制起来的元素) ,出现的次数为 0 或 1

Example:

应用基础: 在正则表达式中, () 能够 "记住" 它们包含的子表达式匹配的文本。

应用场景: 穷举所有可能出现的重复单词显然是不可能完成的任务。

反向引用概念: 反向引用是正则表达式的特性之一,它容许我们匹配与表达式先前部分匹配的同样的文本

反向引用需要与()配合: () 能够记忆其中的子表达式匹配的文本,不论这些文本是什么,元字符序列 都能记住它们。在一个表达式中可以使用多个括号。再用 等来表示第一、第二、第三组括号匹配的文本。

Example:

应用场景: 如果需要匹配的某个字符本身就是元字符,则需要使用转义符号 \