Это один из тех проблем, с которыми я сталкиваюсь при синтаксическом анализе XML или HTML, но это невозможно сделать с помощью регулярных выражений, но вы можете притворяться, будто в основном это сработает.Вы можете настроить его навсегда и не получить права.
Вы можете искать сбалансированные кавычки, то есть только кавычки в парах, но это не помогает.That's 'large'
должен быть выделен как Thats large'
или That's large
?
Вместо этого вам нужно дать ему понимание грамматики английского языка, и когда '
является апострофом противцитаты.Что-то простое, что знает основы схваток и притяжений.Сокращения: don't
, won't
, I'll
.Обладает: Joe's
и s'
.И, может быть, вы можете использовать регулярные выражения, чтобы пропустить их.
Но это быстро усложняется.KO'd
.Или что, если вы хотите указать конкретное произношение: fo'c's'le
.Или чье-то имя O'Doole
.
То, что вы могли бы обойти, убрав пару кавычек, начинающихся в начале слова и в конце слова.It's clear he said, 'this isn't a contraction'.
Соответствие кавычки перед this
и кавычкой в конце contraction
, вероятно, возможно, безопасно.
# Use negative look behind and ahead to look for quotes which are
# not after and before a word character.
# Use a non-greedy match to catch multiple pairs of quotes.
re = /(?<!\w)'(.*?)'(?!\w)/
sentence.gsub(re, '\1')
Это работает во многих случаях.
That's 'large' -> That's large
Eat at Joe's -> Eat at Joe's
I'll be Jane's -> I'll be Jane's
Jones' three cats' toys. -> Jones' three cats' toys.
It's clear he said, 'this isn't a contraction'. -> It's clear he said, this isn't a contraction.
'scare quotes' -> scare quotes
The 69'ers' drummer -> The 69'ers' drummer
Was She's success greater, or King Solomon's Mines's? -> Was She's success greater, or King Solomon's Mines's?
The 69'er's drummer and their 'contractual obligations'. -> The 69'er's drummer and their contractual obligations.
He said, 'it's clear this doesn't work'. -> He said, it's clear this doesn't work.
Но не всегда.
His 'n' Hers's first track is called 'Joyriders'. -> His n Hers's first track is called Joyriders.
Как я уже сказал, это одна из тех проблем, которая выглядит простой, но чрезвычайно сложной, и вы никогда не сможете получить совершенно прав.Это может отсосать много времени.Я бы порекомендовал отказаться от требования, если это возможно.