相关疑难解决方法(0)

如何确定正则表达式是否与另一个正则表达式正交?

我想我的问题最好用一个(简化的)例子来解释.

正则表达式1:

^\d+_[a-z]+$
Run Code Online (Sandbox Code Playgroud)

正则表达式2:

^\d*$
Run Code Online (Sandbox Code Playgroud)

正则表达式1 永远不会匹配正则表达式2匹配的字符串.因此,假设正则表达式1 与正则表达式2 正交.

正如许多人通过正交问我的意思,我会试着澄清一下:

S1是正则表达式1匹配的(无限)字符串集. S2是正则表达式2匹配的字符串集.如果 S1和S2的交点为空,则正则表达式2与正则表达式1正交.正则表达式^\d_a $ 不是正交的,因为字符串'2_a'在集合S1 S2中.

如果两个正则表达式彼此正交,那么如何以编程方式确定它?

最好的情况是一些实现如下方法的库:

/**
 * @return True if the regex is orthogonal (i.e. "intersection is empty"), False otherwise or Null if it can't be determined
 */
public Boolean isRegexOrthogonal(Pattern regex1, Pattern regex2);
Run Code Online (Sandbox Code Playgroud)

regex fsm

14
推荐指数
4
解决办法
1941
查看次数

标签 统计

fsm ×1

regex ×1