正则表达式(Regular Expression)
正则表达式是一种用于匹配字符串中字符组合的模式。它由普通字符(如字母、数字)和特殊字符(称为元字符,如 .、*、+、? 等)组成。正则表达式广泛应用于文本搜索、替换、验证等场景。在本工具中,用户输入的正则表达式将被用于匹配测试文本中的目标内容,配合替换模板实现文本转换。
捕获组(Capturing Group)
捕获组是正则表达式中用圆括号 () 包裹的子表达式。当正则表达式匹配成功时,括号内匹配到的文本会被"捕获"并存储起来,按照左括号出现的顺序进行编号(从 1 开始)。捕获组的主要用途是在匹配后提取特定部分的文本,或者在替换操作中通过编号引用捕获的内容。例如正则 (\d{4})-(\d{2})-(\d{2}) 中包含三个捕获组,分别匹配年、月、日。
非捕获组(Non-capturing Group)
非捕获组使用 (?:...) 语法定义,它的作用与捕获组类似,可以对表达式进行分组和量词操作,但不会将匹配内容存储为捕获组,也不会分配编号。在只需要分组但不需要捕获的场景下,使用非捕获组可以避免干扰捕获组的编号。例如 (?:abc|def) 会匹配 "abc" 或 "def",但不会产生捕获组。
命名捕获组(Named Capturing Group)
命名捕获组是 JavaScript ES2018 引入的语法,使用 (?<name>...) 格式定义,其中 name 是用户自定义的组名。在替换操作中使用 $<name> 引用对应的捕获内容。相比编号捕获组,命名捕获组的可读性更强,尤其在捕获组数量较多时。命名捕获组同时也会被分配编号,因此也可以用 $1、$2 等方式引用。
替换模板(Replacement Template)
替换模板是定义替换结果的字符串模式,其中可以包含特殊引用符号来引用匹配文本的不同部分。在 JavaScript 的 String.replace() 方法中,替换模板支持 $1-$99(捕获组引用)、$&(整个匹配)、$`(匹配前文本)、$'(匹配后文本)、$$(字面量美元符号)和 $<name>(命名捕获组引用)等语法。本工具完整支持所有这些替换引用语法。
全局匹配标志(Global Flag / g)
全局匹配标志 g 是正则表达式的一个修饰符,开启后 String.replace() 会替换所有匹配项而非仅替换第一个匹配。在本工具中,g 标志默认开启,确保所有匹配的文本都会被替换。如果用户只希望替换第一个匹配,可以关闭 g 标志。全局匹配在批量数据处理场景中尤为重要。
$& 引用(整个匹配引用)
$& 是替换模板中的特殊引用符号,代表正则表达式匹配到的整个文本。例如正则 /\d+/ 匹配文本中的数字 "42",则 $& 的值为 "42"。$& 在需要在匹配文本前后添加内容(环绕替换)时非常有用,例如将匹配的数字用方括号包围:模板为 [$&]。
$` 和 $' 引用(前后文本引用)
$`(反引号前)引用匹配位置之前的全部文本,$'(单引号后)引用匹配位置之后的全部文本。这两个引用在构造上下文感知的替换时非常有用。例如,在文本中将匹配到的关键词用方括号标注,同时保留前后文本不变。需要注意的是,这两个引用总是指向整个输入文本中匹配位置的前后内容,而非仅当前行。
UD5工具箱