Как заключить текст в скобки с помощью регулярных выражений? - PullRequest
2 голосов
/ 11 января 2011

Я застрял, пытаясь заключить текст, найденный с помощью регулярных выражений, в скобки. Например, заменить все is на (is):

Input is      : This is a long sentence that IS written.
Desired output: This (is) a long sentence that (IS) written.

Как я могу это сделать? (Сохраняя при этом исходный регистр найденных строк)

Ответы [ 2 ]

6 голосов
/ 11 января 2011
irb(main):001:0> s = 'This is a long sentence that IS written.'
=> "This is a long sentence that IS written."
irb(main):002:0> s.gsub(/\bis\b/i, '(\0)')
=> "This (is) a long sentence that (IS) written"
irb(main):003:0> s
=> "This is a long sentence that IS written"
irb(main):004:0> s.gsub!(/\bis\b/i, '(\0)')
=> "This (is) a long sentence that (IS) written"
irb(main):005:0> s
=> "This (is) a long sentence that (IS) written"
1 голос
/ 11 января 2011

Для вашего примера шаблон регулярного выражения для поиска соответствий: is:

\ b [iI] [Ss] \ b

Вы также можетехочу использовать \ b, границу слова

Для того, чтобы окружить соответствующий шаблон скобками, скобками или еще чем-то:

gsub (/ \ b [iI] [Ss]\ b /, "(\ 0)")

По сути, \ 0 - это предыдущее совпадение, которое должно быть заменено на само собой, заключенное в скобки.

РЕДАКТИРОВАТЬ: Вы можете проверитьВаше регулярное выражение здесь: регулярное выражение ruby ​​

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...