2015-07-21 123 views
1

我想执行这个正则表达式,但我不知道如何写或条件,因为正则表达式的贪婪行为。正则表达式和贪婪

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

上述正则表达式正是我想要的,但我想写出更好的一个看起来像下面这样:

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

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

感谢您的帮助

回答

1

您只需使用这个否定的正则表达式:

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

[^&]*将匹配0或更多,是不是&

+0

感谢您的回答任何字符,但是这在我尝试时不起作用。据我了解,它将匹配包含&的值(如果存在)。我想匹配一个不包含&的值,但只有在值的后面有&或字符串的末尾时,正则表达式才能工作。 下面是一个应该匹配的示例:'https://test.com/#/gg/plop?ign = vava&some_text = 74381hui1h881&iuri = 84' 这应该返回74381hui1h881作为值。 – linvi

+0

没有'&'不需要在输入字符串中。看到这个正则表达式:https://regex101.com/r/nY7qW1/7 – anubhava

+0

感谢它的工作,当我尝试它时,我一定没有输入正确的输入。我将你的回答标记为答案,但你是否介意解释我。我认为这是使用前瞻,但我不确定。谢谢 – linvi