是否可以在 gsub 表达式中使用否定匹配?我想替换以开头的字符串,但以开头的字符串hello
除外hello Peter
my-string.gsub(/^hello@/i, '')
我应该放什么而不是@
?
听起来你想要一个负面的前瞻:
>> "hello foo".gsub(/hello (?!peter)/, 'lala ') #=> "lala foo"
>> "hello peter".gsub(/hello (?!peter)/, 'lala ') #=> "hello peter"
正如迈克尔告诉你的那样,你需要一个消极的前瞻。
对于你的例子是这样的:
my_string.gsub(/^hello(?! peter)( .*|$)/i, '')
这将在以下情况下替换:
"hello"
"hello Mom"
"hello "
"hello Mom and Dad"
并且会忽略以下内容:
"hello Peter"
"hello peter"
"hellomom"
"hello peter and tom"