1. 断言(Assertion)
- 不匹配完整的文本,只需判断在某个位置左/右侧的文本是否符合要求
- 简而言之,断言是指对匹配到的文本位置有要求
- 常见的断言有三类:
- 单词边界
- 行起始/结束位置
- 环视
- 单词边界匹配的是某个位置而不是文本,在正则表达式中,这类匹配位置的元素叫作锚点(anchor),如
\b ^ $
2. 单词边界(Word Boundary)
-
\b
匹配的是“单词边界”位置,而不是字符 -
\w
表示 [A-Za-z0-9_],\w+
一般用来匹配单词

示例:正则 \b\w+\b

示例:连字符-
数据 e-mail
正则 \b[-\w]+\b
3. 行起始/结束位置
-
^ $
开始和结束
平台 | 行终止符 |
---|---|
UNIX/Linux | \n |
Windows | \r\n |
Mac OS | \n |
4. 环视(Look Around)
- 环视结构
(?!…)
正则(?!/)
, (?!…)是这个结构的标识,/ 才是真正的表达式,整个结构的意思是“当前位置之后(右侧),不允许出现 / 能匹配的文本”
4.1 环视的分类
- 肯定顺序环视(positive-lookahead)
- 否定顺序环视(negative-lookahead)
- 肯定逆序环视(positive-lookbehind)
- 否定逆序环视(negative-lookbehind)

4.2 先行断言 vs 后行断言
- 先行断言从左往右看,后行断言从右往左看
-
?=express
正向先行断言Windows(?=95|98|NT|2000)
-
?!=express
反向先行断言 -
?<=express
正向后行断言 -
?<!express
反向后行断言


结果:
右侧必须出现三个数字字符,
右侧不能出现三个数字字符,
左侧必须出现三个数字字符,
左侧不能出现三个数字字符
网友评论