本文节选自百度百科 正则表达式_百度百科 (baidu.com)
正则表达式(Regular Expression)是一种文本模式,包括普通字符和特殊字符(元字符)。它使用单个字符串来描述,匹配一系列匹配某个句法规则的字符串。通常被用来检索、替换那些符合某个模式(规则)等文本。
给定一个正则表达式,我们可以达到如下目的:
1. 判断给定的字符串是否符合正则表达式等过滤逻辑(符合即为“匹配”)。
2. 通过正则表达式,从字符串中获取想要的特定部分。
其特点为灵活、富有逻辑性和功能性,可以迅速地用简单的方式达到字符串等复杂控制。
要想用好正则表达式,正确地理解元字符是重要的。
元字符 | 描述 |
---|---|
\ | 将下一个字符标记为特殊字符/原义字符/向后引用/八进制转义符。 ‘\\n’匹配\n,‘\n’匹配换行符,'\\'匹配\,‘\(’匹配(。相当于多种编程语言中都有的“转义字符”的概念。 |
. | 匹配所有字符。 |
^ | 匹配输入字行首 |
$ | 匹配输入字行尾 |
* | 匹配任意个字符,相当于{0,}。如,'z*'可以匹配'z','zo','zoo'。我的理解是,匹配以前面的表达式打头的单词。 |
+ | 匹配至少一个字符,相当于{1,}。如,'zo+'可以匹配'zo','zoo',但不能匹配'z'。 |
? | 匹配0个或1个字符,相当于{0,1}。如,'do(es)?'可以匹'do'或'does。 |
{n} | n是一个非负整数。匹配确定等n次,例如‘o{2}’不能匹配‘Bob’中等‘o’,但可以匹配'food'中的'oo'。 |
{n,} | 至少匹配n个字符。 |
{n,m} | 匹配n个到m个字符。注意,在逗号和两个数之间不能有空格。 |
x|y | 匹配x或y。例如,'z|food'可以匹配‘z’或‘food’,而 ‘[z|f]ood’可以匹配‘zood’或'food'。 |
[xyz] | 字符集合,匹配所包含的任意一个字符。例如,'[abc]'可以匹配‘plain’中的'a'。 |
[^xyz] | 负值字符集合,匹配未包含的任意字符。例如,'[^abc]'可以匹配‘plain’中‘plin’任意字符。 |
[a-z] | 字符范围,匹配指定范围内的任意字符。例如,'[a-z]'可以匹配'a'到'z'内等任意小写字母。 |
[^a-z] | 负值字符范围,匹配任何不在指定范围内的任意字符。 |
更多实例,可参考知乎大佬@Bgwan的博客。