gpt4 book ai didi

javascript - 正则表达式处理多个匹配就像一个,如何解决?

转载 作者:行者123 更新时间:2023-11-28 20:16:54 25 4
gpt4 key购买 nike

我有一个正则表达式,以及一个包含该正则表达式的一些匹配项的字符串。我的正则表达式处理所有这些匹配,就像它只是一场大比赛一样(当然我不想要这样的行为),让我给你看一个例子:

我的测试字符串(抱歉乱写,但这并不重要):

sdfsd -dsf- sdfsdfssdfsfdsfsd -sdfsdf- 

我的 js 代码中的正则表达式:

view.replace(/(\-(.+)\-)/g, '<span style="background-color:yellow">$1</span>');

我的结果:

sdfsd<span style="background-color:yellow">-dsf- sdfsdfssdfsfdsfsd -sdfsdf-</span>

正如您所看到的,“-”中的每个字符串都必须包含在 span 中,但只有一个 span。我该如何解决这个问题? (老实说,我不想更改我的 (.+) 正则表达式部分,我认为这可能是一个问题,但如果没有其他方法可以做到这一点,请告诉我)。

换句话说,结果必须是:

sdfsd<span style="background-color:yellow">-dsf-</span> sdfsdfssdfsfdsfsd <span style="background-color:yellow">-sdfsdf-</span>

欢迎在评论中询问我,感谢您的帮助。

最佳答案

honestly I don't want change my (.+) regex part, which I think might be a problem

为什么不呢,这实际上是问题的根源,您可以尝试以下有效的正则表达式:

/(\-([^-]+)\-)/g

如果您认为破折号 - 可以出现在 -- 之间,那么您可以使用效率较低的:

/(\-(.+?)\-)/g

+? 导致 lazy match ,或者换句话说,在匹配初始 - 后,.+? 匹配单个字符,然后将控制权移动到后面的 - 并尝试匹配破折号,如果不能,则 .+? 从输入中读取(消耗)另一个字符,依此类推,直到出现以下 - 能够匹配。

关于javascript - 正则表达式处理多个匹配就像一个,如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19078662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com