2015-07-21 157 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