sample_string = "let's could've they'll you're won't" sample_string.scan(/\w+/)Arriba me da:
["let", "s", "could", "ve", "they", "ll", "you", "re", "won", "t"]Lo que quiero:
["let", "could", "they", "you", "won"] He estado jugando en https://rubular.com/ y probando afirmaciones como \w+(?<=') pero no tuve suerte.
Dado:
> sample_string = "let's could've they'll you're won't"Puedes dividir y mapear:
> sample_string.split.map{|w| w.split(/'/)[0]} => ["let", "could", "they", "you", "won"]Puedes usar
sample_string.scan(/(?<![\w'])\w+/) sample_string.scan(/\b(?<!')\w+/)Vea la demostración de Rubular . Los patrones (son sinónimos absolutos) coinciden
(?<![\w']) - una ubicación en la cadena que no está inmediatamente precedida por una palabra o ' char\b(?<!') - una posición de límite de palabra que no está inmediatamente precedida por un ' char\w+ - uno o más caracteres de palabra.Vea la demostración de Ruby :
sample_string = "let's could've they'll you're won't" p sample_string.scan(/(?<![\w'])\w+/) # => ["let", "could", "they", "you", "won"]