【问题标题】:Regular expression for an alphanumeric string of 10 characters10 个字符的字母数字字符串的正则表达式
【发布时间】:2018-07-30 22:19:49
【问题描述】:

我需要为 urls.py 文件编写一个表达式

get-variable var 可以是 10 个字符的字母数字字符串。

链接是这样的

http://127.0.0.1:8000/?var=fea40u7b94

【问题讨论】:

  • 你试过什么正则表达式?您没有向我们提供任何尝试自己回答这个问题。我建议使用Regex101 来帮助自己回答这个问题。查看量词和字符组
  • 极端情况:如果 URL 编码字符包含在其中会发生什么?假设有一个 url http://127.0.0.1:8000/?var=%66%65%61%74%32%38%33%38%39%31 - 这转换为 http://127.0.0.1:8000/?var=feat283891,但是正则表达式将如何处理呢?你想让它处理吗?更多的例子会很棒
  • 向 url 提供 2 个变量时的工作流程应该是什么? http://127.0.0.1:8000/?var=feat283891&othervar=fea40u7b94
  • 我试试 url(r'^(?P\w+{10})$',
  • 我只需要一个变量

标签: regex django


【解决方案1】:

事实证明,当你添加边缘情况时,它会变得稍微复杂一些,所以我将提供一个答案:

[&?]var=((?:%[\dA-Fa-f]{2}|[^&%]){10})(?:&|$)

demo

基本上,这将在参数过程中的任何点匹配“var”,而不匹配“othervar=”,它将确保将 url 编码的字符作为单个字符抓取,并确保它不会抓取部分“var”(例如,信息为 11 或 20 个字符长,这将与该字符串不匹配,因为它会检查其后的另一个参数或字符串的结尾)。

细分:

  • [&?]var= - var= 必须出现在 &? 之后
  • %[\dA-Fa-f]{2} - 匹配百分号后的十六进制代码(将 url 编码的字符作为单个字符获取)。
  • [^&%] - 不是百分比或 & 符号
  • (?:%[\dA-Fa-f]{2}|[^&%]){10} - 非捕获组,获取十六进制代码或不获取百分比或 & 符号 10 次
  • ((?:%[\dA-Fa-f]{2}|[^&%]){10}) - 捕捉我在最后一点解释的内容
  • (?:&|$) - 以 & 符号结尾或字符串或行的结尾

【讨论】:

    【解决方案2】:

    您可以对var的请求字符串值进行分组

    >>> import re
    >>> s
    'http://127.0.0.1:8000/?var=fea40u7b94&xyz=ewewv7832h'
    >>> re.findall('=(\w{10})',s)
    ['fea40u7b94', 'ewewv7832h']
    >>> re.findall('var=(\w{10})',s)
    ['fea40u7b94']
    

    【讨论】:

    • http://127.0.0.1:8000/?othervar=fea40u7b94&xyz=ewewv7832h 怎么样?当它不应该时,这会很高兴地匹配。
    • Keerthana,谢谢,我会试试的。但我不明白为什么我的问题被推送?我不太懂英文。我问错了什么?
    • 嗨,nick,在stackoverflow中,我们基本上尝试自己解决问题,并在遇到困难时在这里询问。在您的问题中,您没有分享您尝试过的那段代码。
    【解决方案3】:

    也许你可以在你的代码中尝试这个。

    /(?<=var\=).{10,10}(?=$)/g

    【讨论】:

    • 这将完全匹配任何等于之后的任何内容。如果它不是已提供的“var”怎么办?他们还要求字符数限制为 10(总是正好 10 个字符),这将接受任意数量的字符。
    • 问题中没有提到其他边缘情况,例如“othervar”,这将是匹配的,如果url中还包含其他参数怎么办? url 编码的字符呢(即使它们根本不必是,但很有可能是)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    • 2016-09-01
    相关资源
    最近更新 更多