如何为两个正则表达式的“交集”编写正则表达式,该正则表达式可用于匹配字符串中的任何位置

2024-02-04

给定两个正则表达式,我们可以编写一个正则表达式来表示它们在以下两种不同含义中的每一个的“交集”,以匹配字符串中的任何位置吗?

  1. 给定两个正则表达式expr1 and expr2,我们可以写一个正则表达式吗 它代表两个给定正则表达式的交集,在集合交集的意义上,并且 正则表达式可用于匹配字符串中的任何位置?

    例如,expr1 is (123|12345|abc|abcde) and expr2 is (345|12345|abc|de)。我想找到一个代表的正则表达式(12345|abc).
    所以当应用正则表达式时blah12345blahabcdeblah, 比赛 是12345 and abc,而当将正则表达式应用于blah123blahabcblah,匹配是abc.

    (?=^expr1$)(?=^expr2$).*有锚点^ and $,这会阻止它在字符串中间查找匹配项。

  2. 给定两个正则表达式expr1 and expr2,我们如何编写正则表达式 它代表两个给定正则表达式的“交集”,在 感觉它由这些字符串组成,每个字符串

    • 至少出现在两个正则表达式之一中,并且
    • 在两个正则表达式的其余部分中有一个前缀,

    正则表达式可以用来匹配字符串中的任何地方?

    例如,expr1 is (123|abcde) and expr2 is (12345|abc)。 我想找到一个代表的正则表达式(12345|abcde).
    所以当应用正则表达式时blah12345blahabcdeblah, 比赛 是12345 and abcde,同时将正则表达式应用于blah123blahabcblah,没有匹配项(123 and abc不匹配)。

当应用正则表达式在字符串中间进行匹配时,第 2 部分中“交集”的定义比第 1 部分中的定义更自然:

在上面的例子中,每当12345是一场比赛,123也出现,所以12345似乎两者都有expr1 and expr2,并且应该位于它们的“交叉点”。如果123是一场比赛,12345不一定匹配,例如,blah123blahabcblah, so 123不考虑在“交叉点”中。类似的解释abcde is and abc不在“十字路口”。

Thanks!


这些应该可以做到:

  1. /(?=expr1(.*)$)expr2(?=\1$)/
  2. /(?=expr1)(?=expr2)/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为两个正则表达式的“交集”编写正则表达式,该正则表达式可用于匹配字符串中的任何位置 的相关文章

随机推荐