正则表达式的坑与调试
nginx 配置的正则表达式
nginx 改写模块中的subs_filter 正则匹配模式配置比 传统的正则表达式 在使用转义 \ 时 多一个 \
示例:
(\\||%2f%2f|%2F%2F|\'|\"|//|\\\/\\\/)([0-9a-zA-Z\-]*\.[0-9a-zA-Z\-\.]+)(:?[0-9]*)(%2f|%2F|/|\"|\\\/|\'|\\?|\\||\\\)
实则是pcre 中的:
(\||%2f%2f|%2F%2F|'|"|//|\\/\\/)([0-9a-zA-Z-]*.[0-9a-zA-Z-.]+)(:?[0-9]*)(%2f|%2F|/|"\\\/|'|\?|\||\\)
(1x|2a) 与 [1x|2a]
前者表示匹配1x 或者 2a 后者 表示 1 x | 2 a 中的任意一个字符
调试网站
单步调试 和性能调试
正则表达式 的编写结果可视化 和 单步调试
https://www.debuggex.com/?re=([0-9]{3})-([0-9]{3})-([0-9]{4})&str=123-456-7899
回溯与CPU 问题
网页改写中配置标题不改写,正则表达式编写为
[^<]*</a>, 当出现cpu问题时,可以用上述调试 进行单步调试 查看执行步数性能情况并进行优化
^[^<][^<]+</a>