我在这里查看了许多正则表达式示例,但仍未找到解决方案。
我必须检查其中某个子字符串的请求字符串。有问题的子字符串之前会有一些东西:
?something=xxx&to_dep=YYY&from_dep=zzz&...
要么
?something=xxx&to_dep=YYY
我需要在第一种情况下提取YYY而不是&
,在第二种情况下只提取YYY。
现在我使用这种正则表达式:
re.search('to_dep=(.+?)&', req.query_string)
但仅适用于一种情况,如果我想重新发布它,则无法使用。 (用其他东西替换YYY - &
也被替换)
任何帮助?
答案 0 :(得分:2)
试试:
[?&]to_dep=([^&]*)
[^&]*
将匹配任何不是&
的字符,或者它将在下一个&
(第一种情况)停止或在字符串末尾停止(第二种情况)。< / p>
答案 1 :(得分:1)
对于两者,你可以使用积极的lookbehind和否定的类:
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=
。