正则表达式浅析(五)

160 阅读1分钟

这是我参与「第四届青训营」笔记创作活动的的第13天

3. 简写字符集

正则表达式为常用的字符集和常用的正则表达式提供了简写。简写字符集如下:

简写描述
.匹配除换行符以外的任意字符
\w匹配所有字母和数字的字符: [a-zA-Z0-9_]
\W匹配非字母和数字的字符: [^\w]
\d匹配数字: [0-9]
\D匹配非数字: [^\d]
\s匹配空格符: [\t\n\f\r\p{Z}]
\S匹配非空格符: [^\s]

4. 断言

后行断言和先行断言有时候被称为断言,它们是特殊类型的 非捕获组 (用于匹配模式,但不包括在匹配列表中)。当我们在一种特定模式之前或者之后有这种模式时,会优先使用断言。 例如我们想获取输入字符串 $4.44 and $10.88 中带有前缀 $ 的所有数字。我们可以使用这个正则表达式 (?<=$)[0-9.]*,表示: 获取包含 . 字符且前缀为 $ 的所有数字。 以下是正则表达式中使用的断言:

符号描述
?=正向先行断言
?!负向先行断言
?<=正向后行断言
?<!负向后行断言

4.1 正向先行断言

正向先行断言认为第一部分的表达式必须是先行断言表达式。返回的匹配结果仅包含与第一部分表达式匹配的文本。 要在一个括号内定义一个正向先行断言,在括号中问号和等号是这样使用的 (?=...)。先行断言表达式写在括号中的等号后面。 例如正则表达式 (T|t)he(?=\sfat),表示: 匹配大写字母 T 或小写字母 t,后面跟字母 h,后跟字母 e。 在括号中,我们定义了正向先行断言,它会引导正则表达式引擎匹配 Thethe 后面跟着 fat

"(T|t)he(?=\sfat)" => The fat cat sat on the mat.