ruby - 如果存在,则从字符串中删除前导引号和尾随引号

标签 ruby regex

如何从字符串中删除前导引号和尾随引号仅当两者都存在时?例如

"hello world" => hello world
"hello world => "hello world
hello world" => hello world"

我用 gsub 试过了,但下面的命令删除了每个前导引号或尾随引号,无论是否存在另一个引号

'"hello world"'.gsub(/\A"|"\Z/, '')
# => this is ok it returns 'hello world'

'hello world"'.gsub(/\A"|"\Z/, '')
# => returns 'hello world' but should return 'hello world"'

最佳答案

你可以使用

str.gsub(/\A"+(.*?)"+\Z/m, '\1')

该模式将匹配一个以一个或多个"开头的字符串,然后它可以有任何字符,任意数量的字符,然后在字符串末尾有一个或多个双引号。整个没有前导和尾随引号的字符串将被插入到带有 \1 反向引用的替换结果中。

参见 IDEONE demo

只删除第一个和最后一个双引号,你可以使用

str.gsub(/\A"(.*)"\Z/m, '\1')

关于ruby - 如果存在,则从字符串中删除前导引号和尾随引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35182160/

相关文章:

ruby - 在 Ruby 中,我需要在类内还是类外?

ruby - 获取惰性枚举器的最后一个元素

javascript - html_safe 在rails to javascript 中不起作用

正则表达式允许在字符串的任何位置出现一个符号?

python - 正则表达式 - 字符串和第一次出现之间的 Python 匹配

mysql - 在 MYSQL 和 PHP 中存储和查询数组或词组

ruby - 如何在 Ruby 中将整数舍入到 <nearest large number>?

ruby-on-rails - Rails 项目不断崩溃。最新错误: missing :controller key

javascript - 匹配 float 模式的正则表达式

javascript:提取字符串的一部分(正则表达式)