正则表达式匹配路由的实现代码

 更新时间:2018年07月13日 16:13:48   作者:__S k y L a r k  
这篇文章主要介绍了正则表达式匹配路由的实现代码,代码也很简单,感兴趣的朋友参考下本文

在 web 开发中,可能会出现限制用户访问规则的场景,那么这个时候就需要用到正则匹配,根据自己的规则去限定请求参数再进行访问

具体实现步骤为:

  • 导入转换器基类:在 Flask 中,所有的路由的匹配规则都是使用转换器对象进行记录
  • 自定义转换器:自定义类继承于转换器基类
  • 添加转换器到默认的转换器字典中
  • 使用自定义转换器实现自定义匹配规则

代码实现

导入转换器基类

from werkzeug.routing import BaseConverter

自定义转换器

# 自定义正则转换器
class RegexConverter(BaseConverter):
  def __init__(self, url_map, *args):
    super(RegexConverter, self).__init__(url_map)
    # 将接受的第1个参数当作匹配规则进行保存
    self.regex = args[0]

添加转换器到默认的转换器字典中,并指定转换器使用时名字为: re

app = Flask(__name__)
# 将自定义转换器添加到转换器字典中,并指定转换器使用时名字为: re
app.url_map.converters['re'] = RegexConverter

使用转换器去实现自定义匹配规则

当前此处定义的规则是:3位数字

@app.route('/user/<re("[0-9]{3}"):user_id>')
def user_info(user_id):
  return "user_id 为 %s" % user_id

  运行测试:http://127.0.0.1:5000/user/123 ,如果访问的url不符合规则,会提示找不到页面

系统自带转换器

DEFAULT_CONVERTERS = {
  'default':     UnicodeConverter,
  'string':      UnicodeConverter,
  'any':       AnyConverter,
  'path':       PathConverter,
  'int':       IntegerConverter,
  'float':      FloatConverter,
  'uuid':       UUIDConverter,
}

系统自带的转换器具体使用方式在每种转换器的注释代码中有写,要注意每种转换器初始化的参数。

总结

以上所述是小编给大家介绍的正则表达式匹配路由的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • js正则表达式中的问号几种用法小结

    js正则表达式中的问号几种用法小结

    这篇文章主要介绍了js正则表达式中的问号几种用法,比如+?,*?,{2,3}?可以停止匹配的贪婪模式,感兴趣的朋友可以参考下
    2014-09-09
  • Web 前端常用正则校验规则整理(常用示例)

    Web 前端常用正则校验规则整理(常用示例)

    这篇文章主要介绍了Web前端常用正则校验规则,本文给大家整理一些常见的示例供大家学习参考,需要的朋友可以参考下
    2023-05-05
  • 一行正则表达式判断质数的代码

    一行正则表达式判断质数的代码

    这篇文章主要介绍了一行正则表达式判断质数,其实这个正则性能非常差(穷举法),实用性不高,但是思路很让人惊艳,需要的朋友可以参考下
    2022-05-05
  • 写出高效率的正则表达式技巧总结

    写出高效率的正则表达式技巧总结

    有相当大的一部分程序员他们只考虑如何能尽快把活干完,从来不考虑如何使自己的代码更完美,更高效,这样的程序员永远也达不到一定的高度。当然,在写正则表达式的时候,我们首先要保证准确性,其次才是效率问题。下面是一些提高正则表达式效率的小窍门。
    2015-09-09
  • 正则表达式匹配不包含某些字符串的技巧

    正则表达式匹配不包含某些字符串的技巧

    这篇文章主要介绍了正则表达式匹配不包含某些字符串的技巧,详细分解了应该怎么做和这么做的原因,需要的朋友可以参考下
    2014-07-07
  • 常用正则表达式 比较实用

    常用正则表达式 比较实用

    正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。
    2009-03-03
  • 关于.*匹配和.*?匹配的区别解析

    关于.*匹配和.*?匹配的区别解析

    这篇文章主要介绍了关于.*匹配和.*?匹配的区别,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • 正则表达式教程之模式修正符使用介绍

    正则表达式教程之模式修正符使用介绍

    式修正符就是几个字母,我们在每个正则表达式中可以一次使用一个,也可以连续使用多个,每一个具一定的意义
    2012-10-10
  • 深入分析正则表达式的子模式

    深入分析正则表达式的子模式

    在正则表达式中,可以使用“(”和“)”将模式中的子字符串括起来,以形成一个子模式。将子模式视为一个整体时,那么它就相当于一个单个字符。下面我们就来详细了解下子模式
    2016-04-04
  • 正则表达式中的正向预查和负向预查

    正则表达式中的正向预查和负向预查

    这篇文章主要介绍了正则表达式中的正向预查和负向预查,本文通过几个场景给大家分析 ,需要的朋友可以参考下
    2019-08-08

最新评论