正则表达式 学习笔记
- 有多个字符串,其中一个字符串中包含部分内容,匹配的到底什么?
答:匹配的是包含匹配内容的那个字符串?还是只有匹配的内容
Go Ahead~
从 hi hi
开始( \b
,\w
, .
, *
)
这个正则匹配的内容由两个字符组成,前面的一个是 h
,后面的一个是 i
。
但是如果某个单词后面还跟着其他字符串,这样的单词中包含的 hi
也会被匹配,比如说 his
。
如何只匹配单个 hi
?
此时可以使用 \bhi\b
,\b
匹配如下位置
元字符 | 作用 |
---|---|
b |
所匹配的位置,前一个字符和后一个字符不全是 w (用来匹配字母、数字、下划线、汉字) |
如果需要匹配 hi
后面的不远处跟着 Lucy
,比如说 hi ,this is Lucy.
可以使用 \bhi\b.*\bLucy\b
。
元字符 | 作用 |
---|---|
. |
匹配除了换行符之外的任何字符 |
* |
用来指定这个元字符 * 前面的内容可以连续重复使用任意多次,可以使得整个表达式得到匹配
|
上面的 .
*
用来表示任何数量的字符,只要字符里边不包括换行,于是 \bhi\b.*\bLucy\b
就表示先有个单词 hi
,隔着很多没有字符,中间没有换行,之后有一个单词 Lucy 。
电话号码的匹配 ( \d
, {n}
)
0\d\d\d-\d\d\d\d\d\d\d\d
用来匹配 0 开头,之后 3 位数字加 -
,之后 8 位数字的电话号码。
使用这么多的 \d
是一件很让人上头的事情,可以使用这样的写法:0\d{3}-\d{8}
。
元字符 | 作用 |
---|---|
d |
匹配一位数字,比如 0 ,1 ,2 等任意的一位数字 |
{n} |
表示这个元字符 {n} 前面的内容必须连续重复多少次 |
好多元字符
元字符 | 作用 |
---|---|
/s |
匹配任意多的空白符 |
/w |
代表着可用文字,包含字母,数字,下划线,汉字 |
/s |
匹配任意多的空白符 |
+ |
与 {n} ,* 类似,指定当前元字符前面的内容重复多次,+ 专指重复 1 次以上 |
现在好多内容在讲正则的时候都不注意区分哪些是核心内容,在很多环境下,会对正则做出拓展,引入了很多新符号,引入了很多的复杂度。可以参考这篇谷歌大牛的文章
编程珠玑番外篇-C.正则表达式精义-1
如果基础扎实的话,有这篇文章
跟vczh看实例学编译原理——零:序言
这是一个图形化的在线正则展示网页,可以用来测试正则
Regexper
网友评论