今天工作有一个需求就是捕获两个字符之间的字符串信息,类似就是AcakeB
这个字符串中提取cake
。
当时只想到如下的表达式:
A.*B
复制代码
上述是将以A开头和以B结尾的字符串提取出来,但是本意是不想要有A和B了。通过查资料发现了如下写法
(?<=A).*(?=B)
复制代码
真的很惊奇正则还有这种写法,继续查了一点资料,又学到一点知识。
下述资料参考自博客 正则 ?
表达式 | 描述 |
---|---|
(?:pattern) | 非捕获匹配,匹配pattern但不获取匹配结果,不进行存储供以后使用。 |
(?=pattern) | 非捕获匹配,正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串,不进行存储供以后使用。 |
(?!pattern) | 非捕获匹配,正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串,不进行存储供以后使用 |
(?<=pattern) | 非捕获匹配,反向肯定预查,与正向肯定预查类似,但是方向相反。 |
(?<!pattern) | 非捕获匹配,反向否定预查,与正向否定预查类似,但是方向相反。 |