正则表达式解析含可选重复proxy-ip的proxy-set配置问题求助
解决配置解析的正则表达式问题
针对你的需求,需要匹配每个完整的proxy-set块(包含所有内部proxy-ip或无proxy-ip的情况),可以使用以下正则表达式:
(?ms)^(\s*)proxy-set.*?^\1exit$
正则说明:
(?ms):启用多行模式(让^和$匹配每行的首尾)和单行模式(让.匹配换行符,支持跨行匹配内容)^(\s*)proxy-set:匹配行首的任意空白字符(捕获为分组1,记录当前proxy-set的缩进层级),紧接着匹配proxy-set关键字.*?:非贪婪匹配任意内容,直到遇到与proxy-set同缩进层级的结束标记^\1exit$:匹配与proxy-set相同缩进的exit行,确保只匹配当前proxy-set的结束,不会误捕获内部proxy-ip块的exit
原正则的问题:
- 原正则强制包含
proxy-ip.*?exit片段,导致没有配置proxy-ip的proxy-set无法被匹配 - 非贪婪匹配逻辑在捕获第一个
proxy-ip块后就终止,无法包含后续的proxy-ip内容
开启全局匹配(g修饰符)后,上述正则可以捕获所有符合要求的proxy-set块,包括含多个proxy-ip和无proxy-ip的场景。
内容的提问来源于stack exchange,提问作者Domien
相关产品推荐
相关产品推荐

