首页 > 解决方案 > 如何匹配 Y 之后的所有 X?

问题描述

我有这个字符串:

A1xB2xC3yD4xE5xF6x

我想匹配(然后替换)每一个x,但只匹配y. 预期匹配:x, x, x. 我试过这个:

(?<=y)x

但它不起作用。假设它匹配x前面的y,但只有 IMMEDIATELY 前面y

所以我尝试了这个:

(?<=.*y.*)x

但显然*,甚至+符号都无效,如果在该组内使用会引发错误。

有什么办法可以做我想做的事吗?

解决方案不能是“最后 3 个x”,因为x's after的数量y是未知的。

标签: javascriptregex

解决方案


现代 Javascript 正则表达式引擎允许对可变长度进行后向断言,因此查看您的问题,这个正则表达式应该适合您:

/(?<=y[^y]*)x/gi

正则表达式演示

此正则表达式在匹配 a 之前断言存在y后跟 0 个或多个非字符。yx


推荐阅读