我注意到2014年由rackspace生成的URI实用程序python库有一个parse_query_string方法,它将删除下划线:
>>> parse_query_string("_id=foo")
{"id":"foo"}
这是不好的行为吗?这是他们正在使用的正则表达式:
_QS_PATTERN = re.compile(r'(?<![0-9])([a-zA-Z][a-zA-Z_0-9\-.]*)=([^&]+)')
我注意到删除第一个a-zA-Z集使其按预期工作:
_QS_PATTERN = re.compile(r'(?<![0-9])([a-zA-Z_0-9\-.]*)=([^&]+)')
知道他们为什么这样做了吗?
答案 0 :(得分:0)
模式与_不匹配,因此您必须重新定义它以获得_
(?<![0-9])([_a-zA-Z][a-zA-Z_0-9\-.]*)=([^&]+)