Openresty资料之正则表达式

本文介绍了Openresty中ngx.re模块提供的六个正则表达式函数,包括匹配、查找、替换和切分等功能。讲解了配置指令lua_regex_cache_max_entries和lua_regex_match_limit对性能的影响,以及匹配选项的设置。特别强调了ngx.re.match和ngx.re.gmatch的使用,以及ngx.re.sub和ngx.re.gsub的区别。最后提到了正则切分函数split的使用方法。
摘要由CSDN通过智能技术生成

Openresty在表ngx.re里提供六个正则表达式相关函数,它们的底层实现是PCRE 库,速度极快,完全可以代替Lua标准库的宇符串匹配函数。

match:单次正则匹配,同时也会捕获子表达式
gmatch:多次正则匹配(以法代器的方式)
find:同match,但返回的是查找到的位置索引
sub:正则替换
gsub:多次正则替换
split:正则切分

◆ 配置指令:

OpenResty提供两个指令用于优化正则表达式的性能。

1.lua_regex_cache_max_entries num

OpenResty会把程序里出现的正则表达式编译后缓存备用(使用“o”选项),这个指令确定了能够缓存的最多数量, 默认是1024 个。如果我们的程序里大量使用了正则表达式,那么就应该在配置文件里用它增大可缓存的数量。

2.lua_regex_match_limit num

设置正则表达式匹配时回溯( backtraking )的最大次数,可以把它设置的小一些以提高运行效率。参数num的默认值是0 ,表示OpenResty将使用PCRE的默认值10000000(一千万)。

◆ 匹配选项:

OpenResty的正则表达式函数都有一个名为options的参数,它是一个字符串,用来定制匹配行为:

a:“锚定”模式,仅从最开始的位置匹配
d:启用DFA模式,确保匹配最长的可能字符串
D:允许重复的命名捕获( duplicate named pattern)
i:忽略大小写,即大小写不敏感
j:启用PCRE-JIT编译,通常与“o”联用
J:兼容JavaScript 的正则表达式语法
m:多行模式
o:正则表达式仅编译一次( compile once),随后缓存
s:单行模式
u:支持UTF-8编码
u:同“u”,但不验证UTF-8编码的正确性
x:启用“扩展”模式,类似Perl的“/x ”

这些参数字符可以联合使用,同时指定多个功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值