Java 正则表达式匹配X、Y或XY,但不是空字符串
我正在编写Java正则表达式模式,遇到了一种情况,我期望X或X或两者都有,但没有空值。Java 正则表达式匹配X、Y或XY,但不是空字符串,java,regex,Java,Regex,我正在编写Java正则表达式模式,遇到了一种情况,我期望X或X或两者都有,但没有空值。 因此,下面的正则表达式模式可以很好地解决这个问题 (十) |(Y)|(XY) 但问题是X和Y可能相当长,我必须编写大量此类代码,这意味着大量冗余和维护问题 (十) ?(Y)?不起作用,因为它可以匹配我不想要的null。我认为没有一种方法可以使用(仅)正则表达式来实现这一点 我的建议是: 您可以从其他内容构建正则表达式;e、 g.通过扩展一个简单的模板来构建它们 您可以看看是否有更好的方法进行匹配,而不涉及正则
因此,下面的正则表达式模式可以很好地解决这个问题 (十) |(Y)|(XY) 但问题是X和Y可能相当长,我必须编写大量此类代码,这意味着大量冗余和维护问题
(十) ?(Y)?不起作用,因为它可以匹配我不想要的null。我认为没有一种方法可以使用(仅)正则表达式来实现这一点 我的建议是:
我不确定我是否理解这个问题,但你可以使用消极前瞻来避免空白匹配
^(?!^$)(X)?(Y)?$
如果负前瞻(?!
。)
的内容在该位置不匹配,则该模式将成功,因此在本例中,只有当X或Y或两者匹配时,整个模式才会成功,否则将匹配^$
,因此前瞻将失败
它假设这是匹配的全部-对于较大模式的一部分,如果有适当的锚来确定匹配失败的原因,则可以使用相同的概念
否则,正如其他人已经建议的那样,创建X和Y作为字符串并从中构建模式将避免冗余。nhahtdh,目的是不匹配空字符串,不是吗?如果他们这样做了,那么被问的问题就没有意义了?(至少,
?
量词是多余的。)