Ruby正则表达式匹配文本,如果它不以字符开头

时间:2013-03-27 17:33:08

标签: ruby regex

我想知道只有当它不以特定字符开头时才能匹配模式。我想匹配“foo”,但我不想匹配“afoo”。我需要什么样的正则表达式运算符?我似乎找不到合适的人。也许是锚?

例如,我想改变

foo foo afoo foo

bar bar afoo bar

感谢。

虽然下面的答案对我的例子来说是正确的,但如果它是/ foo而不是afoo呢?这看起来似乎没有相同的行为?

2 个答案:

答案 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"