关于正则表达式:正则表达式基础工具书篇-所有关于的

6次阅读

共计 934 个字符,预计需要花费 3 分钟才能阅读完成。

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

1. ?:

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

比方咱们想要在一段 HTML 中,拿到一个残缺的 a 标签,还想要拿到这个 a 标签里的链接地址。
正则表达式能够写为 \<a href\="(.*?)"\>\<\/a\>
在进行匹配时,括号内的匹配后果也会一起返回进去。返回后果的应用形式依据语言不同、应用的函数不同而异,大家可自行查阅。

如果咱们在进行匹配时,不须要这个 a 标签里的链接地址。
正则表达式能够写为 \<a href\="(?:.*?)"\>\<\/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. ?<!

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

正文完
 0