2014-01-27 36 views
0

我已經瀏覽了許多正則表達式示例,但仍找不到解決方案。正則表達式 - 在字符串的一部分和字符串的第二部分之間找到一個值OR行尾

我必須檢查其中的某個子字符串的請求字符串。有問題的字符串將有一些它可能有一些前後:

?something=xxx&to_dep=YYY&from_dep=zzz&... OR ?something=xxx&to_dep=YYY

我需要沒有&在第一種情況下提取YYY,只是YYY在第二種情況下。

現在我使用這種正則表達式的:

re.search('to_dep=(.+?)&', req.query_string)

,但只有在一種情況下工作,如果我想應用re.sub它不能被使用。 (用其他東西代替YYY - &也被取代)

任何幫助?

回答

1

對於這兩個,你可能會使用一個正回顧後,和一個反類:

re.search(r'(?<=to_dep=)[^&]+', req.query_string) 

這會給你只YYY,然後意味着你還可以用它在re.sub

re.sub(r'(?<=to_dep=)[^&]+', 'new_value', req.query_string) 

[^&]與除&以外的任何字符匹配。

(?<=to_dep=)確保零件匹配前有一個to_dep=

+0

謝謝,正是我所需要的 – konart

+0

@konart不客氣:) – Jerry

2

與剛剛嘗試:

[?&]to_dep=([^&]*) 

[^&]*將匹配不&任何字符,否則將停止在下&(第一種情況),或者停止對字符串(第二種情況)結束。

相關問題