模块 5 · 第 3 课(共 4)课程中的19/32~8 min
模块课程(3/4)
否定:`[^...]`
将插入符号 ^ 作为括号内的 第一个 字符
反转类:它匹配除**列出的字符之外的任何字符。
Code
Pattern: [^aeiou]
Sample: ciao mondo
^ ^^ ^[^aeiou] matches consonants, spaces, punctuation, digits\u2026 everything that
不是元音。
典型例子
[^\s]-- any "non-space" character (equivalent to\S).[^0-9]-- anything that is not a digit (equivalent to\D).[^"]+-- "a sequence of characters that are not double quotes" (useful to 提取引号之间的内容)。
Code
Pattern: "([^"]+)"
Sample: Il libro "Il nome della rosa" e' famoso.The group ([^"]+) captures everything between quotes stopping
before the next ": it is a classic trick to avoid the
贪婪与懒惰的问题。
否定和替代通配符
否定类 [^...] 仅消耗一个不属于所列集合的字符。它是一个强大的工具,可以防止引擎运行超过关键分隔符,避免无限回溯循环导致的 ReDoS。
尝试一下
锻炼#regex.m5.l3.e1
尝试:0加载中...
提取双引号之间的每个字符串的内容,而不捕获引号本身。
正在加载编辑器...
显示提示
将 .+ 替换为 [^"]+:这样匹配就停止在下一个引号处。
3 次尝试后可用的解决方案
复习练习
锻炼#regex.m5.l3.e2
尝试:0加载中...
找到仅由辅音组成的每个单词(没有元音,没有数字,没有符号)。
正在加载编辑器...
显示提示
在括号内,您可以将元音否定与 \\W(非单词)和 \\d(数字)组合起来。
3 次尝试后可用的解决方案
额外的挑战
锻炼#regex.m5.l3.e3
尝试:0加载中...
匹配一个或多个字符的序列,明确排除空格和逗号。
正在加载编辑器...
显示提示
将 [^\\s,] 与 + 量词一起使用。
3 次尝试后可用的解决方案