我可以使用/[abcd]/、/(ab|cd)/和/[^wxyz]/。为什么不使用/(^wx|yz)/?
通过简单地将其他特性的功能组合在一起,你可以达到完全相同的效果,比如:/(?!wx|yz)../。
那么为什么不直接支持这个特性呢?有没有潜在的原因?
发布于 2012-09-22 01:29:52
因此,想象一下(^wx|yz)意味着--正如您显然想要的--“既不是wx也不是yz的两个字符的序列”。(^vwx|yz)是什么意思?它是否意味着“既不是vwx也不是yz的由两个或三个字符组成的序列”?它是否意味着“一个不是vwx且不以yz开头的三个字符的序列,或者是一个两个字符的yz序列”?
字符类表示法[...]的强大之处在于它总是匹配单个字符,这让它支持范围a-z,支持否定,等等。一旦你取消了这个限制,就不再清楚这些东西意味着什么。
发布于 2012-09-22 01:28:26
您期望/(^wx|yz)/的行为是什么?在我看来,一个空字符串似乎可以满足您提出的“否定替换”。如果您希望它尝试匹配相同数量的字符,那么使用可变长度正则表达式的否定替换怎么办?
我在这里想要得到的是,一个被否定的交替是很难实现的,而且最明显的方法就是作为一个零宽度的断言,所以你可以使用(?!...)。
https://stackoverflow.com/questions/12535113
复制相似问题