什么是匹配不在一行的字符串的正则表达式?

时间:2012-05-06 23:04:23

标签: ruby regex

正则表达式/abc$/将匹配显示在该行末尾的abc。我该怎么办?

我希望匹配不在一行末尾的abc

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

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

1 个答案:

答案 0 :(得分:60)

/abc(?!$)/

(?!$)negative lookahead。它将查找abc的任何匹配,但不会直接跟随$(行尾)

经过测试

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

将其应用于您的案例:

ruby-1.9.2-p290 :007 > "aslkdjfabcalskdfjaabcaabc".gsub(/abc(?!$)/, 'xyz')
  => "aslkdjfxyzalskdfjaxyzaabc"