54

正则表达式/abc$/将匹配abc出现在行尾的一个。我该如何做相反的事情?

我想匹配abc不在行尾的。

此外,我将使用正则表达式来替换字符串,所以我只想捕获abc字符串之后的任何内容,而不是任何内容,因此/abc.+$/不起作用,因为它不仅会替换,还会替换abc之后的任何内容abc

使用什么正确的正则表达式?

4

1 回答 1

78
/abc(?!$)/

(?!$)负前瞻。它将查找任何不直接跟在$(行尾)后面的 abc 匹配项

经测试

  • abc ddee (匹配)
  • dddeee abc(不匹配)
  • adfassdf abc s (匹配)
  • f abc ddee(匹配)

将其应用于您的案例:

ruby-1.9.2-p290 :007 > "aslkdjfabcalskdfjaabcaabc".gsub(/abc(?!$)/, 'xyz')
  => "aslkdjfxyzalskdfjaxyzaabc" 
于 2012-05-06T23:08:32.557 回答