在REGEX中选择引号但不是撇号

时间:2016-03-31 19:08:38

标签: ruby regex quotes apostrophe

我想实现这个惊人的结果(我正在使用Ruby):

input:  "Joe can't tell between 'large' and large."   
output: "Joe can't tell between large and large."

摆脱引号而不是撇号 我怎么能以简单的方式做到这一点?

我失败的过度复杂尝试:

 entry = test[0].gsub(/[[']*1]/, "")

4 个答案:

答案 0 :(得分:3)

这是一个演示答案的脚本:

x = "Joe can't tell between 'large' and large."
puts x.gsub(/'\s|\s'/, " ")
# Output: Joe can't tell between large and large.

解码这个脚本的作用 - gsub / regex行说:

  

查找全部(撇号后跟空格'/ s )或(空格   然后是撇号 \ s')并用空格替换它。

这会留下与空格不完整的撇号,这似乎只删除OP试图删除的撇号。

答案 1 :(得分:3)

对你的情况最简单的可能就是这样。

正则表达方式: /\s'|'\s/并替换为space

<强> Regex101 Demo

您也可以使用/(['"])([A-Za-z]+)\1/并替换为\2,即第二个被捕获的群组。

<强> Regex101 Demo

答案 2 :(得分:0)

也许这个?

entry = test[0].gsub(/[^']/, "")

但它应该删除所有 '

答案 3 :(得分:0)

这完全符合您的要求,包括忽略发布的评论Students'示例。

entry = test[0].gsub(/'(­[^\s]+)'/,­ '\1')

我没有设置ruby,但我确认这可行:http://tryruby.org/levels/1/challenges/0

以下是regex101的示例:

https://regex101.com/r/aY8aJ3/1