Ruby中正则表达式匹配失败求助:编辑器可用但Ruby无匹配
Ruby正则匹配失败的快速修复
- 你的问题大概率是两个原因:Ruby默认正则是单行模式,
.不匹配换行;另外原正则没精准定位到“raw”前的{,也没处理嵌套括号的情况。 - 直接用下面的代码替换你的正则:
- 如果目标内容里有嵌套的
{}(比如{a:{b:1}}这种),用这个递归匹配版本:match_result = string.match(/XIGSharedData.*?raw.*?(\{(?:[^{}]+|\g<1>)*\})/m) puts match_result[1] if match_result - 要是确定没有嵌套括号,用这个更简单的版本:
match_result = string.match(/XIGSharedData.*?raw.*?(\{.*?\})/m) puts match_result[1] if match_result
- 如果目标内容里有嵌套的
- 核心改动说明:
- 加
m修饰符,让.能匹配换行符,解决跨多行匹配不到的问题。 - 用
.*?raw.*?精准定位到“raw”之前的区域,确保抓的是你要的那对{}。 - 递归分组
(?:[^{}]+|\g<1>)*用来处理嵌套括号,避免遇到第一个}就提前结束匹配。
- 加
内容的提问来源于stack exchange,提问作者Ilovebathroomlights
相关产品推荐
相关产品推荐

