专门为初学者编写的正则表达式入门教程

2020-05-10 20:00:16王振洲

我们单独匹配第一组键值对,因为这可以让我么使用 & 分隔符, 作为重复组的一部分。

(基础的) HTML 标签

根据经验,不要使用正则表达式来匹配 XML/HTML。不过,我还是提供相关的一个例子:

/<([a-z]+)+>(.*)</1>/gi

姓名

查找:b(w+) (w+)b

替换:

在替换操作,经常使用 2;捕获使用 1, 2

替换之前

John Doe
Jane Doe
Sven Svensson
Janez Novak
Janez Kranjski
Tim Joe

替换之后

Doe, John
Doe, Jane
Svensson, Sven
Novak, Janez
Kranjski, Janez
Joe, Tim

回溯和复数

查找: bword(s?)b

替换: phrase$1

替换之前

This is a paragraph with some words.
Some instances of the word "word" are in their plural form: "words".

替换之后

This is a paragraph with some phrases.

Yet, some are in their singular form: "phrase".

7 重复

重复是一个强大而普遍的正则表达式特性。在正则表达式中有几种表示重复的方法。

7.1 可选项

我们可以使用 ?将某一部分设置成可选的(0或者1次)。

/a?/g

另一个例子:

/https?/g

我们还可以让捕获组和非捕获组编程可选的。

/url: (www.)?example.com/g

7.2 零次或者多次

如果我们希望匹配零个或多个标记,可以用 * 作为后缀。

/a*/g

我们的正则表达式甚至匹配一个空字符串。

7.3 一次或者多次

如果我们希望匹配 1 个或多个标记,可以用 + 作为后缀。

/a+/g

7.4 精确的 x 次

如果我们希望匹配特定的标记正好x次,我们可以添加{x}后缀。这在功能上等同于复制粘贴该标记 x 次。

/a{3}/g

下面是匹配大写的六个字符的十六进制颜色代码的例子。