这个信息是一类单向边界技巧。在
使用否定向后/向前看断言,
在特定方向内,它将允许字符串的开始/结束匹配,
但不允许其他人匹配。在
这就产生了一些有趣的组合
负结构在一个类中,覆盖了无限的范围
字符,但允许排除中的某些单个字符
那个范围。在
要使用的典型构造是负类。在
\D-非数字类
\S-非空白类
\W-非单词类
\PP-非标点符号属性类
\PL-非字母属性类
因为它们用于否定断言中,所以逆的实际上是
正在寻找的人物。在
\d, \s, \w, \pP, \pL
这种力量来自于它们可以在
a级以获得戏剧效果。在
如果将单个字符添加到类中,则不允许将它们排除在外。
有效地,它创建类减法。在
创建类时的规则是:类的字符,插入负数(即\D,\PP,等等…)
不需要的单个字符,按正常方式插入(即\n,=,等等)
这可以用作类减法。在
减法示例:(?![\S\r\n])是一个需要
在某些引擎中,只有水平空白表示为
\h构造。在
在你的例子中,边界应该是这样的。在
(?
分解它(?
[\S\PP-] # Need all whitespace and punctuation, but not the '-'
)
\#big
(?! # Boundary - Ahead direction
[\S\PP-] # Need all whitespace and punctuation, but not the '-'
)
向类中添加的每个文本字符实际上都排除了
它来自匹配。在
这叫做类减法。在
测试用例
输入#big and #small, #big, #big, #big-red, #big-red-car and #big
输出
^{pr2}$
基本上,{cd15>只配