首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java的正则表达式中,字符类交集背后的意义是什么?

问在Java的正则表达式中,字符类交集背后的意义是什么?
EN

Stack Overflow用户
提问于 2009-07-09 20:53:07
回答 4查看 672关注 0票数 11

Java的Regex.Pattern支持以下字符类:

代码语言:javascript
复制
[a-z&&[def]]

它与"d、e或f“匹配,称为交集。

在功能上,这与以下内容没有区别:

代码语言:javascript
复制
[def]

这在一个大的RE中更容易阅读和理解。所以我的问题是,交集除了指定对字符类的CSG类操作的完全支持之外,还有什么用处?

(请注意,我理解像[a-z&&[^bc]]和[a-z&&[^m-p]]这样的减法的效用,我特别问的是上面提到的交集。)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-07-09 21:13:42

虽然我从来没有这样做的需要,但我可以想象使用预定义的字符类,这些字符类不是彼此的适当子集(从而使交集产生与原始两个字符类不同的东西)。例如,只匹配小写的拉丁字符:

代码语言:javascript
复制
[\p{Ll}&&\p{InBasicLatin}]
票数 4
EN

Stack Overflow用户

发布于 2009-07-09 21:03:03

我相信这个特定的样本只是一个“概念证明”。两个相交的字符类仅与分别匹配两个字符集的字符匹配。您提到的减法运算是运算符的实际应用。

简单地说,没有隐藏的含义。

票数 1
EN

Stack Overflow用户

发布于 2009-07-09 21:04:23

您可以通过编程方式在两个集合之间构建匹配的regexp:

代码语言:javascript
复制
String regex = String.format("[%s&&[%s]]", characterClass, whiteList);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1106387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档