正则表达式
在正则表达式中, 元字符是具有特殊意义的字符, 用于匹配文本模式, 而不是单纯地表示它们自身的字面值.
锚点
锚点用于指定字符串中的某个位置, 而不是具体的字符.
"^"
作用: 匹配字符串或行的开头位置, 不匹配任何具体的字符, 而是锚定字符串开头的位置
用例
^hello
表示匹配以 hello 起始的行, 常常与 /gm 搭配使用, 分别表示 global, multiline.
字符类
零宽断言
零宽断言(Zero-Width Assertion): 通俗理解就是"一个不占地方的条件判断".
1. 什么是零宽?
在正则表达式中, "零宽"(Zero-Width) 的意思是:
- 匹配的位置: 它仅仅检查一个条件是否满足, 而不会"消耗"字符串中的字符.
- 不占字符宽度: 他只确定某种关系或位置, 但不会出现在匹配结果中.
2. 什么是断言?
"断言"(Assertion) 在正则表达式中表示一种条件判断, 它只检查字符串是否满足某种条件, 而不会修改或匹配字符串本身.
常见断言包括:
- 正向前瞻
(?=...) - 负向前瞻
(?!...) - 正向后瞻
(?<=...) - 负向后瞻
(?<!...)
它们都属于零宽断言, 因为它们检查条件, 但不"占用"字符宽度.
正向前瞻
介绍
Positive Lookahead: 是一种在正则表达式中使用的零宽断言, 用于匹配一个特定的模式, 但不会消耗字符. 换句话说, 正向前瞻会检查目标字符串中是否紧跟着一个符合条件的模式, 而不会将这个模式本身包含在匹配的结果中.
用例
这里可以看到, 原本的正则并没有匹配 数字后面的 "PM", 如果在正向前瞻括号的后方加上 "PM", 这两个字符才被匹配上.
量词与分支
"+"
介绍: 修饰前一个字符, 可重复 1 次及以上.
用例
- 简单用法
a+
- 进阶用法, 与其他元字符搭配使用, 或者