【问题标题】:Regex Or and Greedy正则表达式或和贪婪
【发布时间】:2015-07-22 03:47:33
【问题描述】:

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

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

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

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

但由于贪心,当它遇到第一个&amp; 时,它并没有停止值,而是返回到字符串的末尾。

感谢您的帮助

【问题讨论】:

    标签: regex regex-lookarounds regex-greedy


    【解决方案1】:

    你可以只使用这个否定正则表达式:

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

    [^&amp;]* 将匹配 0 个或多个不是 &amp; 的任何字符

    【讨论】:

    • 感谢您的回答,但是当我尝试时这不起作用。据我了解,如果存在,它将匹配包含 & 的值。我想匹配一个不包含 & 的值,但正则表达式只有在值后面有 & 或字符串结尾时才应该起作用。这是一个应该匹配的示例:https://test.com/#/gg/plop?ign=vava&amp;some_text=74381hui1h881&amp;iuri=84 这应该返回 74381hui1h881 作为值。
    • No &amp; 根本不需要在输入字符串中。请参阅此正则表达式演示:regex101.com/r/nY7qW1/7
    • 谢谢它的工作,我尝试时一定没有输入正确的输入。我将您的回复标记为答案,但您介意解释一下吗。我认为这是使用前瞻,但我不确定。谢谢
    • 不,实际上它不是前瞻。正如我所写的,[^&amp;]* 将匹配 0 个或多个不是 &amp; 的任何字符。因此,如果&amp; 不存在,它将匹配到输入结束。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    相关资源
    最近更新 更多