返回主页

常用表达

本页面是对正则表达式的简要介绍。它并非详尽无遗,因为正则表达式基本上代表整个模式匹配语言。如果你想深入挖掘,你可以在互联网上找到关于它的大量信息; 只搜索“正则表达式教程”或“正则表达式介绍”或类似的东西。

匹配所有Microsoft Excel文件:.*\.xlsx?

在正则表达式(通常缩写为“正则表达式”)中,某些字符具有特殊含义。例如,dot'.')代表一个未知字符。例如,你可以使用正则表达式h.llo来匹配像hallohello这样的字符串,还可以使用hzlloh8llo

另一个特殊字符是星号'*'),代表“前面的字符,重复零次或多次”。因此,如果输入正则表达式hello*,则以下字符串将匹配:hellhellohelloohellooo等等。

作为这些规则的结果,如果将点和星号放在一起,它们将匹配任意字符序列。例如,正则表达式gen.*ion将匹配:geniongeneralizationgenerationgentrification等等。

类似于星号的特殊字符是问号'?'),它代表“前一个字符,零次或一次”。您也可以将其改写为“前面的角色可能存在也可能不存在”。与星号一样,它可以与点组合。因此,正则表达式hell.?将匹配:hellhellohellshell4等。

由于点和星号等字符具有特殊含义,如果你想要字面匹配它们,你必须逃避它们。这是通过在它们之前加上另一个特殊字符反斜杠'\')来完成的。需要反斜杠的典型情况是匹配文件名中的点。例如,要匹配文件名为license.txt的所有文件,您必须使用正则表达式license\.txt而不仅仅是license.txt— 后者也会匹配,例如license-txt

因此,如果我们把所有这些放在一起,我们可以写下一个匹配所有Microsoft Excel文件的正则表达式,如:.*\.xlsx?。这个正则表达式基本上是说:一个任意的字符序列,后跟一个文字点,后跟“xls”,末尾有一个可选的“x”。

匹配一系列数字:journal\d+\.doc

假设您要匹配所有以“journal”开头并以时间戳结尾的Microsoft Word文件,如下所示:“journal2007.doc”。而且,你*不想要的是匹配像“journalism.doc”这样的文件。

journal.*\.doc这样的正则表达式在这里不起作用,因为它也匹配“journalism.doc”。解决方案的第一步是用[0-9]\d替换点,两者都完全匹配一位。表达式[0-9]实际上是一个比\d更通用的表示法,因为你可以编写[4-6]来匹配数字456。它甚至适用于字母:[m-p]匹配从m到p的所有小写字母。

因此,如果我们将\d与星号结合起来,我们可以写下正则表达式journal\d*\.doc,它将与“journal2007.doc”匹配,但不能与“journalism.doc”匹配。但等等,这不太正确:回想一下,星号表示“前面的字符,重复或更多次”。在这种情况下,我们不希望“日记”之后的数字,我们想要至少一个— 否则正则表达式也会匹配文件“journal.doc”。

所以这是你的另一个特殊角色:符号('+')代表“前面的角色,重复一次或多次”。因此,我们的正则表达式的最终版本是:journal\d+\.doc