正则表达式

常用元字符:

. 匹配除换行符以外的任意单个字符
\w 匹配单个字母、数字或下划线
\s 匹配任意的空白符
\d 匹配一个数字
\n 匹配一个换行符
\t 匹配一个制表符
^ 匹配字符串的开始
$ 匹配字符串的结尾
\W 匹配非字母、数字或下划线
\D 匹配非数字
\S 匹配非空白字符
a|b 匹配字符a或者b
() 匹配括号内的表达式,也可表示一个组
[…] 匹配字符组内的字符
[^…] 匹配除了字符组中字符的所有字符

量词:控制前面的元字符出现的次数

***** 重复零次或更多次
+ 重复一次或更多次
重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

贪婪匹配和惰性匹配:

.*(贪婪匹配) 尽可能多的匹配符合的结果
.*?(惰性匹配) 尽可能少的匹配符合的结果 –> 回溯

Example:

1
2
3
4
5
6
7
8
9
10
11
12
13
Str:晚上一起去吃饭吗?--去哪儿吃饭呢?
reg:晚上.*吃饭 --> 晚上一起去吃饭吗?--去哪儿吃饭
reg:晚上.*?吃饭 --> 晚上一起去吃饭

Str:<div class="abc"><div>胡辣汤</div><div>饭团</div></div>
reg:<div>.*</div> --> <div>胡辣汤</div><div>饭团</div></div>
reg:<div>.*?</div> --> <div>胡辣汤</div>
<div>饭团</div>

Str:123x456x789x
reg:.*?x --> 123x
456x
789x