Java的Regex.Pattern支持以下字符类:
[a-z&&[def]]它与"d、e或f“匹配,称为交集。
在功能上,这与以下内容没有区别:
[def]这在一个大的RE中更容易阅读和理解。所以我的问题是,交集除了指定对字符类的CSG类操作的完全支持之外,还有什么用处?
(请注意,我理解像[a-z&&[^bc]]和[a-z&&[^m-p]]这样的减法的效用,我特别问的是上面提到的交集。)
发布于 2009-07-09 21:13:42
虽然我从来没有这样做的需要,但我可以想象使用预定义的字符类,这些字符类不是彼此的适当子集(从而使交集产生与原始两个字符类不同的东西)。例如,只匹配小写的拉丁字符:
[\p{Ll}&&\p{InBasicLatin}]发布于 2009-07-09 21:03:03
我相信这个特定的样本只是一个“概念证明”。两个相交的字符类仅与分别匹配两个字符集的字符匹配。您提到的减法运算是运算符的实际应用。
简单地说,没有隐藏的含义。
发布于 2009-07-09 21:04:23
您可以通过编程方式在两个集合之间构建匹配的regexp:
String regex = String.format("[%s&&[%s]]", characterClass, whiteList);https://stackoverflow.com/questions/1106387
复制相似问题