正则表达式 - 在字符串的一部分和字符串的第二部分或行尾之间找到一个值

时间:2014-01-27 09:19:54

标签: python regex

我在这里查看了许多正则表达式示例,但仍未找到解决方案。

我必须检查其中某个子字符串的请求字符串。有问题的子字符串之前会有一些东西:

?something=xxx&to_dep=YYY&from_dep=zzz&... 要么 ?something=xxx&to_dep=YYY

我需要在第一种情况下提取YYY而不是&,在第二种情况下只提取YYY。

现在我使用这种正则表达式:

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

但仅适用于一种情况,如果我想重新发布它,则无法使用。 (用其他东西替换YYY - &也被替换)

任何帮助?

2 个答案:

答案 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=