【问题标题】:Are underscores in URL query parameters valid?URL 查询参数中的下划线是否有效?
【发布时间】:2015-01-10 03:06:47
【问题描述】:

我注意到 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\-.]*)=([^&]+)')

知道他们为什么这样做吗?

【问题讨论】:

  • 我不认为这是不好的行为,有时需求可能会证明他们的合理性。但总的来说,避免使用下划线将有助于创建更具可读性的 url。

标签: python http url


【解决方案1】:

模式与 _ 不匹配,所以你必须重新定义一点才能得到 _

(?<![0-9])([_a-zA-Z][a-zA-Z_0-9\-.]*)=([^&]+)

【讨论】:

  • 我认为这里不需要|-alteration。 [_a-zA-Z] 应该可以正常工作。
猜你喜欢
  • 1970-01-01
  • 2011-04-10
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-25
  • 2019-12-17
  • 1970-01-01
相关资源
最近更新 更多