一、题记
以前很少接触到文字搜索匹配的功能,所以正则表达式也是用的少,由于最近在做一个工具,其中用到了正则表达式,所以写篇博客巩固学到的知识,真是不学不知道,一学吓一跳,好牛逼的正则啊。
二、基本概念
正则表达式:是一些由字符和特殊符号组成的字符串,它们描述了这些字符和字符的某种重复方式,因此能够按照某种模式匹配一个有相似特征的字符串集合,在代码中常写为regex、regexp、RE。
在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
三、使用规则
元字符 | 说明 | 使用样例 |
---|---|---|
\ | 转义字符 | \n匹配换行 |
re1|re2 | 匹配正则表达式re1或re2 | foo|bar |
.点 | 匹配任何字符(换行符除外) | b.b |
^ | 匹配字符串的开始 | ^Dear |
$ | 匹配字符串的结尾 | com$ |
* | 匹配前面出现的正则表达式零次或多次 | [A-Za-z0-9]* |
+ | 匹配前面出现的正则表达式一次或多次 | [a-z]+\.com |
? | 匹配前面出现的正则表达式零次或一次 | goo? |
{N} | 匹配前面出现的正则表达式N次 | [0-9]{3} |
{M,N} | 匹配前面出现的正则表达式M~N次 | [0-9]{5,9} |
[…] | 匹配字符组里出现的任意一个字符 | [aeIoU] |
[x-y] | 匹配从字符x到y中的任意一个字符 | [A-Za-z] |
[^a-z] | 负值字符范围。匹配任何不在指定范围内的任意字符 | [^a-z] |
(…) | 匹配封闭号中正则表达式,并保存为子组 | ([0-9]{3})?,f(oo |
\d | 匹配任何数字,和[0-9]一样,(\D是\d的反义,任何非数字) | data\d+.txt |
\w | 匹配任何数字字母,和[A-Za-z0-9]一样,(\W是\w的反义) | \w+ |
\s | 匹配任何空白符,(\S是\s的反义) | |
\b | 匹配一个单词边界,(即正则表达式的“匹配”有两种概念,一种是匹配字符,一种是匹配位置,这里的\b就是匹配位置的) | “er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。 |
\B | 匹配非单词边界 | “er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。 |