正则表达式:"至少有一个捕获必须匹配"

时间:2015-12-21 22:24:28

标签: java regex

考虑以下正则表达式:

/^(A....)?(B..)?(C...)?$/

有没有办法限制正则表达式,至少有一个捕获必须匹配"?

实际上我需要这个用于java正则表达式。我可以想象,这是不可能的。也许使用更强大的perl正则表达式机器?

当然,我可以对其进行后期处理,但也许还有另一种方式......

3 个答案:

答案 0 :(得分:2)

确保某些内容与前瞻

匹配
/^(?=.)(A....)?(B..)?(C...)?$/

答案 1 :(得分:2)

您可以使用此模式:

^(A....)?(B..)?(C...)?(?<=.)$

最后的零宽度断言确保整体匹配中至少有一个字符,如果没有任何组匹配任何字符,则不会出现这种情况。

答案 2 :(得分:0)

RegEx匹配模式:

/apples|bananas|carrots/

来源文字: This allows apples or bananas or carrots to appear anywhere in the source text, confirming that the source contains at least of of the choices. https://regex101.com/r/gZ1cW5/1

但是,正如我评论的那样,目前尚不清楚你真正想要的是什么。目前尚不清楚您是否需要知道哪一个匹配。 您应该始终发布要评估的示例源文本。