+ - * / % < > = ! & ^ | ? :
我试过了:
[+-*/%<>=!&^|?:]
但我认为其中一些需要被挖空。我怎么知道哪些?
答案 0 :(得分:7)
您需要转义-
,否则它将被解释为+
和*
之间的字符范围,这是无效的:
[+\-*/%<>=!&^|?:]
据我所知,其他元字符字面意思是字符类。
答案 1 :(得分:1)
如果您将减号作为第一个或最后一个字符放入您的组中,则不需要任何屏蔽,因为它不能像[a-z]那样意味着“直到”。同样,插入符只表示“不在此组中”,如果它是该组的第一个字符:[^ a-z]:= not a-z。
量词(+?*)在一个组中没有任何意义,因此用于表示它们的字符在这里代表自己。
其他字符在正则表达式中从不意味着特殊的东西。
scala中的快速演示:
for (c <- "-+*/%<>=!&^|?:") yield ("" + c).matches ("[-+*/%<>=!&^|?:]")
res1: scala.collection.immutable.IndexedSeq[Boolean] =
Vector(true, true, true, true, true, true, true, true, true, true, true, true, true, true)
答案 2 :(得分:0)
您可以尝试使用其中一个字符类,例如\ p {Punct}(匹配US-ASCII标点符号)或\ W匹配非单词字符,而不是显式枚举符号!(A-Za-z0-9 )。
你会使用像\ p {Punct} *或\ W *之类的东西,它们可能会导致比你的其他搜索更广泛的东西,但这可能不是一件坏事....
答案 3 :(得分:-1)
阅读手册:-)? +匹配至少一个前一个字符,*表示任意数量的字符,|是逻辑的,或者^定义了一个字符的否定。 你也可以逃避所有这些!!
修改强>
我明白了,我本应该先阅读手册: - )