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

我想匹配abc个不在一行末尾的.

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

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

推荐答案

/abc(?!$)/

(?!$)negative lookahead.它将查找abc的任何匹配项,该匹配项后面不直接跟$(行尾)

经受考验

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

将其应用于您的 case :

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

Ruby相关问答推荐

为什么在if语句中的赋值操作不会在条件判断之前发生?

当一个方法在没有参数的 return 关键字上提前退出时,返回什么值?

当我在 Ruby 中围绕最后一个字符拆分时,如何拆分字符串?

使用 Drive API 创建空文件

有人可以解释 Ruby 在块中使用管道字符吗?

如何使用 Ruby 的邮件 gem 通过 smtp 发送Electron邮件?

如何判断 Ruby 数组是否包含多个值之一?

Ruby访问嵌套函数中的外部变量

查明 IP 是否在 IP 范围内

使用 Ruby MiniTest 之前/之后的套件

可可豆荚安装在iOS项目上不起​​作用

`require': no such file to load in ruby

理解|| Ruby 中 If 条件中的 OR 运算符

仅针对特定参数的 Rspec 存根方法

Unexpected Return (LocalJumpError)

当我将参数传递给脚本时,使用 gets() 会出现没有这样的文件或目录错误

将 CSV 文件转换为哈希数组

正则表达式,如何匹配多行?

何时使用在 Ruby 中启动子进程的每种方法

为依赖于环境变量的代码编写规范的最佳方法是什么?