[正则表达式]基础工具书篇 所有关于?的

?在正则表达式界拥有特别高的地位。因为跟 ?相关的符号太多了。除了之前讲的「表示匹配次数0或1次」以及「表示非贪婪匹配」之外,还有其它的作用,咱们一起码一码。

1. ?:

用来表示子表达式非捕获。
用圆括号包裹的表达式,即子表达式,其匹配到的内容,默认情况下,也会被保存到内存中,以供使用。

比如我们想要在一段HTML中,拿到一个完整的a标签,还想要拿到这个a标签里的链接地址。
正则表达式可以写为 \\<\/a\>
在进行匹配时,括号内的匹配结果也会一起返回出来。返回结果的使用方式根据语言不同、使用的函数不同而异,大家可自行查阅。

如果我们在进行匹配时,不需要这个a标签里的链接地址。
正则表达式可以写为 \
\<\/a\>

将不需要的子表达式设置为非捕获模式,可以节省内存。

2. ?=

用来表示定预查。即满足后者条件的前者。
借用一下经典例子,正则表达式 Windows(?=95|98) 会匹配到 Windows95Windows98中的 Windows,而不会匹配到 Windows2000WindowsXP等字符串中的Windows
要注意,它只会匹配出 Windows

3. ?!

用来表示定预查。即不满足后者条件的前者。
正则表达式 Windows(?!95|98) 会匹配到 Windows2000WindowsXP等字符串中的Windows,而不会匹配到 Windows95Windows98中的 Windows
要注意,它只会匹配出 Windows

4. ?<=

用来表示定预查。即满足前者条件的后者。
正则表达式 (?<=95|98)Windows 会匹配到 95Windows98Windows中的 Windows,而不会匹配到 2000WindowsXPWindows等字符串中的Windows
要注意,它只会匹配出 Windows

5. ?

用来表示定预查。即满足前者条件的后者。
正则表达式 (? 会匹配到 2000WindowsXPWindows等字符串中的 Windows,而不会匹配到 95Windows98Windows中的Windows
要注意,它只会匹配出 Windows

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