Python 正则表达式更改搜索字符串中的位置

Python 正则表达式更改搜索字符串中的位置,python,regex,Python,Regex,我有这个字符串: rf=hello&ur=bello&au=yello 但是,位置随每条新线随机变化,例如 au=yello&rf=hello&ur=bello 现在需要什么正则表达式来获取所有rf=(a-z)+其中au==yello?使用正则表达式您可以使用: (?=.*?(?:^|&)au=yello(?:&|$)).*?(?:^|&)rf=([^&]+) 参数rf值在捕获的组#1中可用。如果组不是选项,请尝试此操作。(举

我有这个字符串:

rf=hello&ur=bello&au=yello
但是,位置随每条新线随机变化,例如

au=yello&rf=hello&ur=bello

现在需要什么正则表达式来获取所有rf=(a-z)+其中au==yello?

使用正则表达式您可以使用:

(?=.*?(?:^|&)au=yello(?:&|$)).*?(?:^|&)rf=([^&]+)

参数
rf
值在捕获的组#1中可用。

如果组不是选项,请尝试此操作。(举例说明)

它将检查rf=?在au=yello或rf=之前存在?在之后出现


请随意简化括号。

无正则表达式。作语法分析具体如何取决于你的语言。对于PHP,尝试一下,因为这将允许您简单地检查
if($arr['au']==“yellow”)echo$arr['rf']Aggree,您可以使用正则表达式,但这要复杂得多。你需要lookbehinds,如果有的话,或者构建疯狂的可选未捕获组,等等。你能告诉我们,你使用哪种语言吗?当然,也许可以根据Python修改您的问题。那么什么是更有效的呢?一个带有LookBehind/LookAheads的正则表达式,或者两个带有if子句的正则表达式,就像Niet the Dark Absol建议的那样?不幸的是,我的实际输入字符串要复杂一些-
(rf=([a-z]+)(.+))*(au=yello)(.+)(rf=([a-z]+)(.+))*