【问题标题】:Regular expression to match special characters within double quotes正则表达式匹配双引号内的特殊字符
【发布时间】:2016-04-18 01:37:38
【问题描述】:

我的输入字符串是:

"& is here "& is here also, & has again occured""

在Ruby语言中使用gsub方法,有没有办法用字符'$'替换出现在双引号内的字符'&',如果gsub方法不能解决这个问题,有没有其他方法可以用来解决这个问题。

由于 gsub 方法中的第一个参数可以是一个正则表达式,所以匹配的正则表达式将被第二个参数替换,获得一个正确的正则表达式来识别也可能解决这个问题,因为它可以在 gsub 方法中替换以替换 '&'用'$'。

预期输出如图:

& is here "$ is here also , $ has again occured"

【问题讨论】:

  • 用英文写作时请使用英文标点。
  • 我会匹配引用的子字符串并替换每个匹配项中的与号。
  • 使用正则表达式无法以任何稳健的方式完成。
  • @pguardiario:因为 regex 只是搜索(它不包括替换),所以使用 regex 根本无法做到这一点。但它可以用正则表达式和其他东西来完成:)
  • 抱歉@sawa,您能否突出显示我当前帖子中的错误,以便我对此进行改进。

标签: ruby regex rubular


【解决方案1】:
str = %q{& is here "& is here also , & has again occured"}
str.gsub!(/".*?"/) do |substr|
  substr.gsub(/&/, '$')
end
puts str
# => & is here "$ is here also , $ has again occured"

编辑:刚刚注意到 stribizhev 在我写之前提出了这种方式。

【讨论】:

  • 我是 regex 新手,你能解释一下 /".*?"/ 和 /".*"/ 之间的区别吗?
  • 非贪婪与贪婪。在'both "foo" and "bar"' 上尝试它们。
猜你喜欢
  • 2021-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多