代码之家  ›  专栏  ›  技术社区  ›  linvi

Regex Or和贪婪

  •  1
  • linvi  · 技术社区  · 10 年前

    我正在尝试执行这个正则表达式,但由于正则表达式的贪婪行为,我不确定如何编写or条件。

    some_text=(?<value>.*)&|some_text=(?<value>.*)$
    

    上面的正则表达式正是我想要的,但我想编写一个更好的正则表达式,如下所示:

    some_text=(?<value>.*)(?:&|$)
    

    但由于贪婪,当它遇到第一个值时,这个值不会停止 & 相反,它返回到字符串的末尾。

    谢谢你的帮助

    1 回复  |  直到 10 年前
        1
  •  1
  •   anubhava    10 年前

    您可以只使用以下否定正则表达式:

    some_text=(?<value>[^&]*)
    

    [^&]* 将匹配0个或多个不匹配的字符 &