正则表达式有两种基本的操作,分别是匹配和替换。
匹配就是在一个文本字符串中搜索匹配一特殊表达式;
替换就是在一个字符串中查找并替换匹配一特殊表达式的字符串。
1.基本元素
正则表达式定义了一系列的特殊字符元素以执行匹配动作。
正则表达式基本字符
字符 | 描述 |
---|---|
text | 匹配text字符串 |
. | 匹配除换行符之外的任意一个单个字符 |
^ | 匹配一个字符串的开头 |
$ | 匹配一个字符串的末尾 |
在正则表达式中,我们还可用匹配限定符来约束匹配的次数。
匹配限定符
最大匹配 | 最小匹配 | 描述 |
---|---|---|
* | * | 重复匹配前表达式零次或多次 |
+ | + | 重复匹配前表达式一次或多次 |
重复匹配前表达式零次或一次 | ||
{m} | {m} | 精确重复匹配前表达式m次 |
{m,} | {m,} | 至少重复匹配前表达式m次 |
{m,n} | {m,n} | 至少重复匹配前表达式m次,至多重复匹配前表达式n次 |
据上所述,".*"为最大匹配,能匹配源字符串所有能匹配的字符串。".* "为最小匹配,只匹配第一次出现的字符串。如:d.*g能匹配任意以d开头,以g结尾的字符串,如"debug"和"debugging",甚至"dog is walking"。而d.* g只能匹配"debug",在"dog is walking"字符串中,则只匹配到"dog "。
在一些更复杂的匹配中,我们可用到组和运算符。
组和运算符
组 | 描述 |
---|---|
[...] | 匹配集合内的字符,如[a-z],[1-9]或[,./;'] |
[^...] | 匹配除集合外的所有字符,相当于取反操作 |
A|B | 匹配表达式A或B,相当于OR操作 |
(...) | 表达式分组,每对括号为一组,如([a-b]+)([A-Z]+)([1-9]+) |
/number | 匹配在number表达式组内的文本 |
新闻热点
疑难解答