因此,[^x]
表示不匹配 "x",而 x*
表示匹配 "x" 0 次或多次,但是 [^*]
是什么意思呢?
这意味着“匹配一个不是字面上的星号字符的字符”。
需要记住的是,在字符类中,元字符不需要被转义,所以 [^*]
和 [^\*]
是相同的。类似地,您可以使用[.]
代表一个实际的点而不是通配符表示任何字符的元字符。在字符类之外,您需要对其进行转义:\.
。
[^\*]
才对吧? - Nick Brunt[
和]
之间,*
字符没有其通常的意义。(在这种情况下使用它没有用处。) - Keith Thompson\*
。 - manojlds(?!\*)
。 - Alan Moore*
没有特殊含义,所以它的字面意思是“不是*
”。只有-
、^
和]
是字符类中具有特殊含义的字符。除此之外,所有字符都被视为字面含义。例如,[^.]
的意思是“不是.
”,就像[^$]
的意思是“不是$
”一样。[[]
将匹配 [
。 - manojlds[a^]
将匹配^
,而[a-]
将匹配-
。 - manojlds
[^x]
并不表示“不匹配x
”,而是表示“匹配一个字符,只要它不是x
”。这两者之间有重要的区别,常常会导致混淆。例如,如果你想查找包含字母q
但其后不跟随u
的单词,就不能使用q[^u]
,因为它会在像Iraq
的单词上失败。相反,需要使用顺序预测断言(q(?!u)
)。 - Tim Pietzcker