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

标签 ruby regex

正则表达式 /abc$/ 将匹配出现在行尾的 abc。我该怎么做?

我想匹配不在行尾的 abc

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

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

最佳答案

/abc(?!$)/

(?!$) 是一个 negative lookahead .它将查找 abc 的任何匹配项,但后面没有直接跟 $(行尾)

测试

  • abcddee(匹配)
  • dddeeeabc(不匹配)
  • adfassdfabcs(匹配)
  • fabcddee(匹配)

将它应用到你的案例中:

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

关于ruby - 什么是匹配不在行尾的字符串的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10475015/

相关文章:

arrays - 检查一个数组中的所有字符串是否都在另一个数组中

ruby - 使用 Nokogiri::XML::Builder 忽略空节点的最干净的方法是什么

ruby-on-rails - Rails 5.1 中的 skip_before_action 回调和继承

ruby - Ruby 中的快速(不安全)随机字节生成器

javascript - Chrome 的正则表达式 - 我可以查看它们吗?

regex - lua gsub 特殊替换产生无效的捕获索引

regex - 为什么只有 ) 是一个特殊字符而不是 } 或 ]?

javascript - 如何获取字符串中引用的文本?

Ruby 作用域:MyClass.new 和::MyClass.new 之间的区别

regex - 哪个是更好的非贪婪正则表达式或否定字符类?