2

我正在尝试在 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})")

但它不起作用。

提前致谢!

4

1 回答 1

3

你很亲密。不过,您的第一个负面环顾是前瞻。所以它着眼于 的第一个字符to_wrap。只需回顾一下:

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

并且只是为您提供一个替代选项来逃避括号(这实际上是一个品味问题,但我发现它更容易阅读):

"(?<![(])#{to_wrap}(?![)])"
于 2012-11-25T10:43:00.503 回答