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]+)(.+))*