正则表达式初学者指南

你有没有试过在一段文本中找到一个重复出现的模式? 您可能使用过浏览器或文字处理器中的搜索功能之类的功能,但是当您需要查找更复杂的内容时,就像在大海捞针中寻找针一样。

幸运的是,有一种方法可以从文本中挑选出精确到字符的精确模式。 它被称为正则表达式 (RegEx),它可以让您成为搜索文本的高手。

哪里可以使用正则表达式?

尽管 Unix 和 Linux 使它们流行起来,但正则表达式可以在各种软件包中使用,包括 Microsoft Word.

正则表达式在几个著名的 Linux 程序中最显着地使用,包括 grep, AwkSed.

为了 example,您可能需要检查 PC 上的 USB 设备。 使用 lspci,您将看到所有设备的列表,您必须自己找到 USB 条目。 您可以改为使用以下内容仅显示 USB 设备:

这是最简单的 example 正在运行的 RegEx。 这是在终端中使用正则表达式最流行的方式,但不是唯一的方式。 今天,您可以在许多不同类型的软件中找到 RegEx 支持,从文本编辑器到文件管理器。

寻找模式

你可能用过 * 字符,在终端中选择文件或文件夹时充当通配符。 为了 example, 要列出文件夹中的所有 JPG 文件,您可以使用:

与上述等效的 RegEx 将是:

要搜索 jpg 和 png 文件,请使用:

范围

如果要搜索特定范围的字符而不是模式,可以通过在括号中定义它来实现。 如果,对于 example, 你用 [a-z] 作为您的模式,这将匹配由字母表中的任何小写字母组成的任何字符串。

正如你可能已经猜到的, [A-Z] 将只选择大写字母。 要选择任意范围的字母(大写和小写),表达式将更改为 [a-zA-Z].

要定位模式的特定数量的实例,您可以在大括号中说明它。 {5} 将返回您的模式的五次出现。 您还可以使用数字范围,因此 {5,10} 会给你五到十个实例。

元字符

在正则表达式中,您还可以搜索包含两个称为元字符的字符的字符串部分。 它们类似于您可能在 shell 中使用的通配符匹配。

第一个是简单的点,它代表任何其他单个字符。 如果你使用了模式 c.ll,它会匹配“cell”,但也会匹配“cull”和“call”。

通过在点后输入星号,您可以使用它来匹配无限数量的字符。 为了 example, .*board 将同时匹配“keyboard”和“skateboard”。 即使“key”和“skate”的字母数不同。

逃脱

您可能已经注意到,在我们的 example,在我们选择不同类型的图像文件的地方,我们在句点(“.jpg”)之前使用了反斜杠。 这就是您在 RegEx 中转义特殊字符的方式。

如果我们不使用它们,我们的模式不仅会匹配文件的扩展名,比如“.jpg”和“.png”这样的字符串,还会匹配“ajpg”和“opng”。 记住, . 是匹配任何字符的通配符。

锚点和边界

锚点和边界使您可以更准确地定义您正在寻找的内容。

要仅查找单个单词“computer”,前后不附加其他字符,您应该将模式定义为 <computer>.

您还可以专门搜索出现在行首或行尾的模式。 这是通过 ^$ 分别是字符。

因此,如果您只想查找在行首出现“计算机”一词的条目,您的模式将如下所示 ^computer. 相反,当它位于行尾时,模式将更改为 computer$.

这些是 RegEx 的简单规则,您也可以混合使用这些规则以准确找到您正在寻找的模式。 您可以使用单个文本字符串搜索行首的字符范围或末尾的交替词、特定日期或年份范围。

不要忘记查看我们的正则表达式备忘单以掌握正则表达式。

永远不会错过

接收我们最新教程的更新。

注册所有时事通讯。 我想通过电子邮件接收时事通讯。 我们不会共享您的数据,您可以随时取消订阅。 订阅

相关阅读:

Posted in: LinuxTags: