我想实现这个惊人的结果(我使用Ruby):
input: "Joe can't tell between 'large' and large."
output: "Joe can't tell between large and large."
摆脱引号而不是撇号 我怎么能以简单的方式做到这一点?
我失败的过度复杂的尝试:
entry = test[0].gsub(/[[']*1]/, "")
最简单的一个适合你的情况可能是这样的。
正则表达式:/\s'|'\s/
并替换为space
。
您也可以使用/(['"])([A-Za-z]+)\1/
并替换为\2
,即第二个被捕获的组。
这是一个演示答案的脚本:
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试图删除的撇号。
也许这个?
entry = test[0].gsub(/[^']/, "")
但它应该删除所有'
。
这正是你正在寻找的,包括忽略发布的评论Students'
的例子。
entry = test[0].gsub(/'([^\s]+)'/, '\1')
我没有设置ruby,但我确认这可以在这里工作:http://tryruby.org/levels/1/challenges/0
以下是regex101的示例: