简体中文

文本和日常工具·文本工具包

文字还是正则表达式?为什么搜索词中的一个点可以改变每个结果

· 为什么它很重要

查找和替换 正则表达式 文本编辑

一个点版本号,采用单独的文字和正则表达式搜索路径
原始 ToolAcre 矢量图

解释哪些字符在正则表达式中具有含义,当 'a.b' 或 'v1.2 (beta)' 被视为模式时会出现什么问题,以及为什么转义所有内容的文字模式应该是默认值。

搜索“v1.2”并匹配“v102”——正则表达式优先工具如何悄悄地将标点符号变成通配符

在发行说明中更改 `v1.2` 的支持代理可能会合理地期望这四个字符来标识一个版本标签。但是,启用正则表达式后,点表示除换行符之外的任何字符。因此,该模式可以匹配 `v102`、`v1-2` 或 `v1x2`,并且“全部替换”可以更改从未属于所请求版本的条目。

此失败很安静,因为模式有效。没有错误消息来区分故意的通配符和从文件名复制的标点符号。第一个警告可能是意外的大量替换计数。当任务是准确替换已知文本时,标点符号应该是数据,而不是对搜索引擎的指令。

元字符 — 点、方括号、圆括号、加号、星号、问号、竖线、插入符号、美元符号和反斜杠,以及各自的作用

在 JavaScript 正则表达式模式下,点是通配符;方括号定义字符类;括号创建一个组;另外,星号和问号控制重复;管道提供了替代方案。在此工具中,插入符号和美元符号将模式锚定到整个文本的开头或结尾,因为未启用多行模式。

反斜杠改变后面字符的读取方式,大括号可以表示重复计数。这些符号仅在正则表达式语法特殊对待它们的位置上才重要,因此记住列表不如确定工作需要哪种模式可靠。如果您要匹配提供的标签、路径片段或文件名,请按字面意思开始。

JavaScript 正则表达式模式中重要的元字符

文字模式使搜索意味着键入的内容。 ToolAcre 在编译搜索之前转义正则表达式元字符,因此 `v1.2 (beta)` 匹配点、空格和括号本身。它不会将短语转换为通配符后跟捕获组,并且它仍然会找到文本中的每个确切出现位置。

这种转义仅发生在搜索端。替换字段仍然遵循 JavaScript 替换字符串规则,其中 `$&` 插入匹配的文本,`$$` 生成一个美元符号。因此,文字搜索是识别文本的安全默认设置,但在选择全部替换之前,包含美元符号的替换仍然值得仔细审查。

正则表达式模式——当你需要权力时,以及如何自己转义单个字符

正则表达式模式非常有用。模式可以针对一系列数字、可选标点符号或替代项,而无需列出每个源拼写。仅当这种可变性是有意为之时才打开正则表达式,然后在必须保留其普通含义时使用反斜杠转义特殊字符,例如 `.` 表示点。

该工具使用 JavaScript 正则表达式语法编译模式并始终在全局应用它。清除区分大小写会添加不区分大小写的匹配,但不提供多行、全点、粘性和 unicode 标志。在不更改文本的情况下报告无效语法。有效但过于广泛的模式仍然运行,因此编译成功并不能证明安全匹配集。

工作示例 - 在文字模式下替换发行说明中的“config.yml(旧)”,然后在正则表达式模式下尝试相同的操作以查看差异

考虑包含 `Load config.yml (old)`、`Archive configXyml old` 和 `Keep config.yml (new)` 的发行说明。关闭正则表达式后,搜索 `config.yml (old)` 并将其替换为 `config.yml (legacy)`。正是第一个短语发生了变化,因为在编译模式之前点和括号被转义了。

打开正则表达式并提交相同的未转义搜索。点可以消耗另一个字符,而括号组 `old` 而不是匹配文字括号,因此预期的行不再与所写的匹配。正则表达式等效项需要 `config.yml (old)`。文字版本更短、更清晰,并且更符合该精确文本任务。

常见错误 - 搜索框中的尾随空格、混淆整个单词和文字以及忘记替换计数检查

尾随空格很容易被忽视,因为搜索字段赋予它们很少的视觉重量,但文字模式保留了它们。搜索 `beta ` 将不会匹配行末尾的 `beta`。当明显可见的术语报告零替换时,请检查字段边界,并避免仅仅为了将复制的文本与周围的散文分开而添加空格。

整个单词不是文字的别称。它将编译后的搜索包装在单词边界中,这里的单词边界是基于 ASCII 的,并且可能会因标点符号或重音术语而失败。每次运行后还要检查替换计数,并在令人惊讶时使用“撤消”。计数是有关范围的证据,而不是装饰性的成功消息。

常见错误:空格、整个单词边界和替换语法

本页并不尝试提供正则表达式标志的完整指南。 ToolAcre 使用全局匹配和可选的不区分大小写的匹配,而锚点仍然引用完整文本而不是每一行。从具有内联标志、POSIX 类或不同语法的引擎复制的模式可能无法编译,或者可能在浏览器中意味着其他内容。

支持捕获组,因此大纲需要更正,而不是说它们在工具之外。在正则表达式模式下,可以使用替换中的 `$1`、`$2` 及后面的数字来引用组。该功能独立于文字搜索和有限的标志控制;仅当重组匹配文本是实际目标时才使用它。

此处的标志受到限制,而替换中支持捕获组

实用规则很简单:在替换已知版本、文件名、产品标签或句子片段时,将 Regex 关闭。文字模式会自动转义特殊字符,保留标识目标的标点符号。仅当您可以说明模式应接受哪些变体以及精确搜索不足的原因时,才启用正则表达式。

在提交编辑后的发行说明之前,将报告的计数与您预期的更改数量进行比较并检查结果。 ToolAcre 保持无效模式不变,并为超出范围的有效模式提供撤消功能。这些保护措施有所帮助,但为文字工作选择文字模式会阻止广泛匹配发生。