我想用字符串填充正则表达式变量。如何用参数填充正则表达式字符串
import re
hReg = re.compile("/robert/(?P<action>([a-zA-Z0-9]*))/$")
hMatch = hReg.match("/robert/delete/")
args = hMatch.groupdict()
args变量现在是{“action”:“delete”}的字典。
我怎么能扭转这个过程?与args字典和正则表达式模式,我如何获得字符串“/罗伯特/删除/”?
它可能有这样的功能?
def reverse(pattern, dictArgs):
谢谢
如果你有你的描述字符串值的字典扩展,你是感兴趣...为什么你需要一个正则表达式来重新构建该字符串?你已经拥有了所有能够改变世界的机会。只需编写一个函数来获取这些位并创建一个字符串。 (换句话说,这是不可能的,你可能会浪费你的时间尝试。) – Tomalak
我想这个“功能”来实现像Django中使用的reverse()函数来获取URL字符串。有可能Django只是“粗暴”模式而已? – 0xBAADF00D
如果有的话,这是一个Python的东西,而不是Django的东西。但我的观点是这样的。你会如何反转,例如'“/ robe [或] t?/(?P((?!foo)[a-zA-Z0-9] *))”'?没有办法从匹配列表返回到原始字符串,因为正则表达式包含可选部分和条件部分,这些部分相互依赖。因此,要么定义一个允许的正则表达式的非常窄的子集,并为此编写一个解析器,可能仍然缺少一些副案例并严重限制自己 - 或者您花费更多的时间更有成效。 ;)正则表达式匹配是一条单行道。 –
Tomalak