求一RUBY的正则表达式
想把字符串中的以包含 [if+空格+任意多个字符+XYZ+空格+end]的地方替换成一空格.
我写的是newStr = str.gsub(/if\s+*XYZ.*\s+end/, ' ')
如果str = "abc if dfelieXYZoiuo end ttt if ereXYXdd end "时
newStr = "abc "
但我想要的结果是:newStr = "abc ttt "
用什么参数可以得到最小匹配,而不是最大匹配.先谢了.
[解决办法]
str = "abc if dfelieXYZoiuo end ttt if ereXYZdd end "
newStr = str.gsub(/\s*if\s+.*?XYZ.*?\s+end\s*/, ' ')
newStr = str.gsub(/\s*if\s+\S*XYZ\S*\s+end\s*/, ' ')
可以在*后加?,表示最少匹配;或者使用更严格的\S而不是.。个人推荐你使用第二种。
另外你原来的代码写的就有几个问题,我给你纠正过来了。连第二个 "XYZ "都写成 "XYX ",害我调了半天。