常用表达
本页面是对正则表达式的简要介绍。它并非详尽无遗,因为正则表达式基本上代表整个模式匹配语言。如果你想深入挖掘,你可以在互联网上找到关于它的大量信息; 只搜索“正则表达式教程”或“正则表达式介绍”或类似的东西。
匹配所有Microsoft Excel文件:.*\.xlsx?
在正则表达式(通常缩写为“正则表达式”)中,某些字符具有特殊含义。例如,dot('.'
)代表一个未知字符。例如,你可以使用正则表达式h.llo
来匹配像hallo
或hello
这样的字符串,还可以使用hzllo
或h8llo
。
另一个特殊字符是星号('*'
),代表“前面的字符,重复零次或多次”。因此,如果输入正则表达式hello*
,则以下字符串将匹配:hell
,hello
,helloo
,hellooo
等等。
作为这些规则的结果,如果将点和星号放在一起,它们将匹配任意字符序列。例如,正则表达式gen.*ion
将匹配:genion
,generalization
,generation
,gentrification
等等。
类似于星号的特殊字符是问号('?'
),它代表“前一个字符,零次或一次”。您也可以将其改写为“前面的角色可能存在也可能不存在”。与星号一样,它可以与点组合。因此,正则表达式hell.?
将匹配:hell
,hello
,hells
,hell4
等。
由于点和星号等字符具有特殊含义,如果你想要字面匹配它们,你必须逃避它们。这是通过在它们之前加上另一个特殊字符反斜杠('\'
)来完成的。需要反斜杠的典型情况是匹配文件名中的点。例如,要匹配文件名为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]
来匹配数字4
,5
和6
。它甚至适用于字母:[m-p]
匹配从m到p的所有小写字母。
因此,如果我们将\d
与星号结合起来,我们可以写下正则表达式journal\d*\.doc
,它将与“journal2007.doc”匹配,但不能与“journalism.doc”匹配。但等等,这不太正确:回想一下,星号表示“前面的字符,重复零或更多次”。在这种情况下,我们不希望“日记”之后的零数字,我们想要至少一个— 否则正则表达式也会匹配文件“journal.doc”。
所以这是你的另一个特殊角色:加符号('+'
)代表“前面的角色,重复一次或多次”。因此,我们的正则表达式的最终版本是:journal\d+\.doc