正则表达式中的X和/或Y

5
考虑以下正则表达式,其中XY是任意正则表达式。
XY|YX|X|Y

这个正则表达式测试是否存在X和/或Y,但如果没有找到“and”子句,则必须再次检查表达式。

最佳匹配X和/或Y的方法是什么?


1
YX怎么样?还是只有XYXY - Craig
@DevZer0 XY任意 正则表达式。如果它们是单个字符,那么可以使用,但我正在寻找通用解决方案。 - FThompson
嗯,X?Y... X 零次或一次,然后跟着 Y。 - fge
1
/XY?|YX?/ 这样的简单东西怎么样? - Craig
那不是你的问题! - fge
显示剩余4条评论
3个回答

2
正则表达式/XY?|YX?/可以匹配你列出的四种情况。然而,这是有限制的,因为如果你使用的正则表达式有一个共同的匹配,你可能会得到意想不到的结果。

信息有限,解决方案也有限

如果这是一个问题,也许应该在问题中添加更多要求。 说明: 前半部分将尝试匹配X正则表达式,然后尝试匹配Y正则表达式0或1次。如果X正则表达式失败,则尝试第二个部分;它将尝试匹配Y正则表达式,然后尝试匹配X正则表达式0或1次。

1

[XY]+ 表示获取任意数量的 X 和 Y(包括 XYYXYX 等)。

或者...

[XY]{1,2} 表示选择 1-2 个 X 和 Y(仅包括您提供的 4 个示例)。


允许XXYY - Steve P.
2
字符类将不起作用(如评论中所讨论的),因为 XY 代表的是 任何东西,而不仅仅是一个字符。 - FThompson

0

X和/或Y存在时,这将匹配整行,而不仅仅是X和/或Y部分本身。 - FThompson
如果X和/或Y存在,则匹配该行,如果X和Y都不存在,则不匹配该行。 - anubhava
如果您不想匹配整行,可以使用正则表达式,如此链接所示:http://www.rubular.com/r/K36HjXzHLF - anubhava
现在它基本上等同于简单的 X|Y,就匹配而言。XY 的出现应该是这样匹配的,但是您的正则表达式将它们分别匹配为 XY - FThompson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接