2

我正在尝试确定某个字符是否出现在另一个字符的第一次(也是唯一一次)出现之前。

例如,我想确定字符“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

这可能与单个正则表达式匹配吗?

4

2 回答 2

4

你可以尝试这样的事情:

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

在英语中,这是“一串非 Y,然后是 X,然后是任何包含 Y 的字符串”。

于 2013-10-05T00:46:38.477 回答
3

就这么简单:

^[^Y]*X.*Y

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

查看与您的示例一起使用的现场演示。

于 2013-10-05T01:28:06.093 回答