“[^*]”是什么意思?(涉及IT技术)

24

因此,[^x] 表示不匹配 "x",而 x* 表示匹配 "x" 0 次或多次,但是 [^*] 是什么意思呢?


1
你在哪里看到这个被使用?我认为星号在这里会失去元字符的意义,就像“.”一样,但如果你能告诉我们是哪种语言,可能会有更多的信息。 - imm
4
此处 [^x] 并不表示“不匹配 x”,而是表示“匹配一个字符,只要它不是 x”。这两者之间有重要的区别,常常会导致混淆。例如,如果你想查找包含字母 q 但其后不跟随 u 的单词,就不能使用 q[^u],因为它会在像 Iraq 的单词上失败。相反,需要使用顺序预测断言(q(?!u))。 - Tim Pietzcker
4个回答

32

这意味着“匹配一个不是字面上的星号字符的字符”。

需要记住的是,在字符类中,元字符不需要被转义,所以 [^*][^\*] 是相同的。类似地,您可以使用[.]代表一个实际的点而不是通配符表示任何字符的元字符。在字符类之外,您需要对其进行转义:\.


1
那肯定应该是 [^\*] 才对吧? - Nick Brunt
4
在方括号[]之间,*字符没有其通常的意义。(在这种情况下使用它没有用处。) - Keith Thompson
1
@Nick - 在字符类中,你不必写成\* - manojlds
1
这并不完全正确。你应该写成“匹配一个不是字面意义上的星号的字符”。 - Tim Pietzcker
1
Tim是正确的。"不要匹配字面上的星号字符"同样可以描述负向先行断言,(?!\*) - Alan Moore

5
这意味着一个不是实际字符“*”的单个字符出现。不需要转义字符,因为星号在字符类中没有特殊含义。这应该不会令人惊讶,因为字符类中的插入符号“^”也具有完全不同的含义。

5
字符类中,*没有特殊含义,所以它的字面意思是“不是*”。只有-^]是字符类中具有特殊含义的字符。除此之外,所有字符都被视为字面含义。例如,[^.]的意思是“不是.”,就像[^$]的意思是“不是$”一样。

1
实际上,[[] 将匹配 [ - manojlds
此外,[a^]将匹配^,而[a-]将匹配- - manojlds
@manojlds,确实如此,但我想说的是,如果在特定的上下文中使用,它们确实具有特殊含义。任何其他字符都不会有特殊含义。 - rid

1

搜索引擎symbolhound非常适合这样的符号搜索。以下是[^*]的结果

[揭露:SH团队成员]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接