Reputation: 955
I would like to achieve this amazing result (I'm using Ruby):
input: "Joe can't tell between 'large' and large."
output: "Joe can't tell between large and large."
getting rid of the quotes but not of the apostrophe
how can I do it in a simple way?
my failed overcomplicated attempt:
entry = test[0].gsub(/[[']*1]/, "")
Upvotes: 0
Views: 880
Reputation: 2344
Here's a script to demo an answer:
x = "Joe can't tell between 'large' and large."
puts x.gsub(/'\s|\s'/, " ")
# Output: Joe can't tell between large and large.
To decode what this script does - the gsub / regex line is saying:
Find all (an apostrophe followed by a space '/s) or (a space followed by an apostrophe \s') and replace it with space.
This leaves apostrophes that aren't adjacent to spaces intact, which seems to remove only the apostrophes the OP is trying to remove.
Upvotes: 2
Reputation: 2797
This does exactly what you are looking for, including ignoring the posted comments Students'
example.
entry = test[0].gsub(/'([^\s]+)'/, '\1')
I don't have ruby set up, but i confirmed this works here: http://tryruby.org/levels/1/challenges/0
Here is an example on regex101:
https://regex101.com/r/aY8aJ3/1
Upvotes: 0
Reputation:
Simplest one for your situation could be something like this.
Regex: /\s'|'\s/
and replace with a space
.
You can also go with /(['"])([A-Za-z]+)\1/
and replace with \2
i.e second captured group.
Upvotes: 3
Reputation: 4801
Maybe this one?
entry = test[0].gsub(/[^']/, "")
But it should remove all '
.
Upvotes: 0