正则表达式基础

正则表达式 学习笔记

  1. 有多个字符串,其中一个字符串中包含部分内容,匹配的到底什么?
    答:匹配的是包含匹配内容的那个字符串?还是只有匹配的内容
    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

你可能感兴趣的:(正则表达式基础)