Очистка текста несколькими кавычками, оставив только пару из них - PullRequest
0 голосов
/ 26 мая 2020

Как можно заменить текст, содержащий несколько из следующих шаблонов, только необходимыми кавычками?

Provide we with """"""""""""""""""""""""""""""""This is what matters"""""""""""""""""""""""""""""""".

Результат должен быть:

Provide we with "This is what matters".

Я уже пробовал это, но это не сработало:

 gsub("\"\"", "\"", txt)

Также эти тексты имеют разное количество кавычек, поэтому есть те, у которых меньше кавычек, а другие - еще больше.

Ответы [ 2 ]

1 голос
/ 26 мая 2020

Замена каждой пары "" на ", когда у вас есть несколько последовательных вхождений, приведет к тому, что несколько последовательных двойных кавычек останутся в строке. Вы хотите сопоставить 1 или несколько символов " и заменить их одним " или сопоставить и удалить любые ", за которыми следует ".

Вы можете использовать

gsub('"+', '"', txt)

См. Демонстрацию R

Шаблон "+ соответствует одной или нескольким двойным кавычкам и заменяет фрагменты одинарными кавычками.

С stringr::str_remove_all, вы можете использовать регулярное выражение, которое будет соответствовать любому ", за которым следует ":

library(stringr)
str_remove_all(txt, '"(?=")')

См. демонстрацию регулярного выражения . Регулярное выражение здесь содержит (?=") положительный просмотр вперед, который требует наличия " непосредственно справа от текущего местоположения.

Та же концепция может быть передана в базе R с регулярным выражением PCRE (используйте perl=TRUE ):

gsub('"(?=")', '"', txt, perl=TRUE)
0 голосов
/ 26 мая 2020

Вариант с str_remove_all

library(stringr)
str_remove_all(txt, '"+')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...