用括号括起来

时间:2012-11-25 10:41:49

标签: ruby regex

我正在尝试在ruby中将字符串括在字符串中,只要它还没有被包装:

"my string (to_wrap)" => "my string (to_wrap)"
"my string to_wrap" => "my string (to_wrap)"

我尝试过类似的事情:

to_wrap = 'to_wrap'
regexp = Regexp.new "(?!\()#{to_wrap}(?!\))"
string.sub(regexp, "(#{to_wrap})")

但它不起作用。

提前致谢!

1 个答案:

答案 0 :(得分:3)

你非常接近。不过,你的第一个负面看法是前瞻性的。所以它会查看to_wrap的第一个字符。只是让它成为一个外观:

"(?<!\()#{to_wrap}(?!\))"

只是为了向你展示一个替代选项以逃避括号(这真的是一个使用的味道问题,但我觉得它更容易阅读):

"(?<![(])#{to_wrap}(?![)])"