正则表达式:确定在第一次出现另一个字符之前是否出现某个字符

时间:2013-10-05 00:41:16

标签: regex

我正在尝试确定某个角色是否出现在另一个角色的第一个(也就是第一个)出现之前。

例如,我想确定字符'X'是否出现在第一次出现'Y'之前。

正则表达式会匹配这些:

acXaaccccYaaacacXacacaY // X appears before the first occurrence of Y
aXacacaXacacXavaY // X appears before the first occurrence of Y

正则表达式不匹配:

acacacaYacacacXacacacY // The X appears after the first occurrence of Y

单个正则表达式匹配是否可以实现?

2 个答案:

答案 0 :(得分:4)

您可以尝试这样的事情:

^[^Y]*X.*Y.*$

在英语中,那是“一串非Y,然后是X,那么任何东西,只要它包含Y”。

答案 1 :(得分:3)

就这么简单:

^[^Y]*X.*Y

如果您需要匹配整个输入,请添加.*,即:^[^Y]*X.*Y.*

使用您的示例查看此live demo