Найдите подстроку с общим символом '[a, z] - \ n' и замените неосновную часть подстроки '- \ n' - PullRequest
1 голос
/ 19 апреля 2019

У меня есть текст, который я очищаю в R. Я хочу использовать stringi, но с удовольствием использую другие пакеты.

Некоторые слова разбиты на две строки.Таким образом, я получаю подстроку "halfword- \ nsecondhalfword".

У меня также есть строки, которые просто "---- \ nword" и "- \ n" (и некоторые другие, которые я не хочу заменять.

Что я хочу сделатьидентифицировать все подстроки "[az] - \ n" и затем сохранить общую букву [a, z], но удалить символы - \ n.

Я не хочу удалять все - \ nи я не хочу удалять букву [az].

Спасибо!

1 Ответ

0 голосов
/ 19 апреля 2019

Вы можете использовать границы слов для соответствия -<LF> только между символами:

gsub("\\b-\n\\b", "", x)
gsub("(*UCP)\\b-\n\\b", "", x, perl=TRUE)
stringr::str_replace_all(x, "\\b-\n\\b", "", x)

Последние два поддерживают границы слова между любыми символами слова Юникода.

См. Демоверсию regex .

Если вы хотите удалить -<LF> между буквами, вы можете использовать

gsub("([a-zA-Z])-\n([a-zA-Z])", "\\1\\2", x)
gsub("(\\p{L})-\n(\\p{L})", "\\1\\2", x, perl=TRUE)
stringr::str_replace_all(x, "(\\p{L})-\n(\\p{L})", "\\1\\2")

Если вам нужно поддерживать только строчные буквы, удалите A-Z в первых gsub и замените \p{L} на \p{Ll} в последних двух.

См. это демо регулярных выражений .

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