我想知道只有当它不以特定字符开头时才能匹配模式。我想匹配“foo”,但我不想匹配“afoo”。我需要什么样的正则表达式运算符?我似乎找不到合适的人。也许是锚?
例如,我想改变
foo foo afoo foo
到
bar bar afoo bar
感谢。
虽然下面的答案对我的例子来说是正确的,但如果它是/ foo而不是afoo呢?这看起来似乎没有相同的行为?
答案 0 :(得分:4)
听起来你正在寻找背后的负面看法。如果您说(?<!expr1)expr2
,那么它将匹配任何expr2
匹配,只要它不会立即在expr1
匹配之前。例如:
>> 'foo foo afoo foo'.gsub(/(?<!a)foo/, 'bar')
=> "bar bar afoo bar"
答案 1 :(得分:3)
str = "foo foo afoo foo"
str.gsub(/\bfoo/, "bar") #=> "bar bar afoo bar"