select 在 REGEX 中引号但不是撇号

select quotes but NOT apostrophes in REGEX

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

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

去掉引号但不去掉撇号
我怎样才能以简单的方式做到这一点?

我失败的过于复杂的尝试:

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

也许是这个?

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

但它应该删除 所有 '.

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

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 行说的是:

Find all (an apostrophe followed by a space '/s) or (a space followed by an apostrophe \s') and replace it with space.

这使得不与空格相邻的撇号完好无损,这似乎只删除了 OP 试图删除的撇号。

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

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

Regex101 Demo


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

Regex101 Demo

这正是您要查找的内容,包括忽略已发布的评论 Students' 示例。

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

我没有 ruby 设置,但我确认这在此处有效:http://tryruby.org/levels/1/challenges/0

这是一个关于 regex101 的例子:

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