Javascript 如何匹配Y之后的所有X?
我有这个字符串:Javascript 如何匹配Y之后的所有X?,javascript,regex,Javascript,Regex,我有这个字符串: A1xB2xC3yD4xE5xF6x 我想匹配(然后替换)每个x,但只匹配y之后的。预期匹配:x,x,x。 我试过这个: (?<=y)x (?<=.*y.*)x 但是显然*甚至+符号都是无效的,如果在该组中使用,就会抛出错误 有什么办法可以做我想做的事吗 解决方案不能是“最后3个x”,因为y之后的x数量未知。Moden Javascript正则表达式引擎允许长度可变的查找断言,因此查看您的问题,此正则表达式应该适用于您: /(?<=y[^y]*)x/gi
A1xB2xC3yD4xE5xF6x
我想匹配(然后替换)每个x
,但只匹配y
之后的。预期匹配:x
,x
,x
。
我试过这个:
(?<=y)x
(?<=.*y.*)x
但是显然*
甚至+
符号都是无效的,如果在该组中使用,就会抛出错误
有什么办法可以做我想做的事吗
解决方案不能是“最后3个
x
”,因为y
之后的x
数量未知。Moden Javascript正则表达式引擎允许长度可变的查找断言,因此查看您的问题,此正则表达式应该适用于您:
/(?<=y[^y]*)x/gi
/(?你的正则表达式语言是什么?我正在使用,但忘了将其更改为JavaScript。我刚刚更改了,它可以工作。那么我应该结束这个问题吗?找到第一个y
在哪里,从该索引创建一个子字符串,并在该子字符串中匹配x
?在JavaScript/(?如果您发现了解决方案,请在下面自己的答案中进行描述。如果社区认为该解决方案使问题偏离主题,则该问题将被关闭。如果您认为该问题不值得任何努力,则请将其删除(关闭不是您的选项,但可能您的意思是删除)。“但显然,*
甚至+
符号都无效,如果在该组中使用,则会引发错误”表明他们的引擎不支持可变长度lookbehind。因此JavaScript正则表达式实际上是最高级的?@GirkovArpa.NET
也支持可变长度lookbehind。这不区分大小写,因此假设没有“xXyY”除了特殊的,不是吗?也就是说,任何地方都不应该有X9或Y9或类似的。从提供的样本输入来看,这似乎是一个合理的假设。但是你同意这个假设吗?@anubhava:这在问题的主体中。当这个答案起作用时,他们原来的正则表达式也会起作用。(不过,这是一个更高效的版本。)