gpt4 book ai didi

Python 正则表达式 : string does not contain "jpg" and must have "-" and lowercase

转载 作者:行者123 更新时间:2023-11-28 20:11:20 25 4
gpt4 key购买 nike

我在为 Django URL 找出 Python 正则表达式时遇到了麻烦。我有一定的标准,但似乎无法想出神奇的公式。最后,我可以识别哪个页面是 CMS 页面,并将它应该加载的别名 url 传递给 django 函数。

以下是一些可以匹配的有效字符串示例:

  • 关于我们
  • 联系我们
  • 条款和条件
  • info/learn-more-pg2
  • 信息/我的示例网址

标准:

  • 必须全部小写
  • 必须包含破折号“-”
  • 可以包含数字、字母和斜杠“/”
  • 长度必须至少为 4 个字符,最多为 30 个字符
  • 不能包含特殊字符
  • 不能包含以下字词:
    • .jpg
    • .gif
    • .png
    • .css
    • .js

不应该匹配的例子:

  • 关于我们(大写)
  • contactus(没有破折号)
  • pg(少于 4 个字符)
  • img/bg.gif(包含“.gif”)
  • files/my-styles.css(包含“.css”)
  • my-page@(包含字母、数字、破折号或斜线以外的字符)

我知道这还没有结束,但这是我所得到的:

(?P<alias>([a-z/-]{4,30}))

我为我的需求量太大而道歉,但我就是无法理解这些正则表达式的东西。

谢谢!

最佳答案

我很困惑为什么一些评​​论员发现这在正则表达式中很难做到。这正是正则表达式所擅长的。

if re.match(
r"""^ # match start of the string
(?=.*-) # assert that there is a dash
(?!.*\.(?:jpg|gif|png|css|js)) # assert that these words can't be matched
[a-z0-9/-]{4,30} # match 4-30 of the allowed characters
$ # match the end of the string""",
subject, re.VERBOSE):
# Successful match at the start of the string
else:
# Match attempt failed

确实,由于 . 不在允许的字符之列,因此实际上没有必要检查禁止的文件扩展名。

关于Python 正则表达式 : string does not contain "jpg" and must have "-" and lowercase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4109088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com