Предположим, что у меня длинная строка текста, например абзац или более, и есть определенное слово, которое появляется часто, назовем его KEY.Вставьте n после слова после соответствия регулярному выражению
Я хочу вставить «\ n» после слова, которое появляется после каждого КЛЮЧА.
Так что, если у меня есть строка KEY Hello this is KEY an example
. Я хочу, чтобы это выглядело как KEY Hello \nthis is KEY an \nexample
Если задача была несколько проще, и я просто хотел бы добавить \ п после KEY, то я мог бы легко сделать это с, gsub("KEY","KEY \n",string)
, но я не думаю, что регулярное выражение имеет элегантный способ выбрав слово после матча, и даже если это произойдет, я не уверен, что смогу использовать его в gsub
.
Что было бы хорошим способом добавить \ n, где я хочу?
Используйте группу захвата и обратитесь к ней? 'gsub (" (KEY. +?) "," \\ 1 \ n ", string)'. Или более общий 'gsub (" (KEY [.,;!?]. +?) "," \\ 1 \ n ", string)'. Помещая любую пунктуацию, которую вы хотите в части класса символов '[.,;!?]' – Jota
Карл, вы упрощаете. Что относительно 'Некоторый КЛЮЧ, следующее слово'? Что делать, если после «следующего» слова нет места? И что для вас слово *? 1 + буквенно-цифровое/подчеркивание ('\ w +')? Или просто буквы ASCII с дефисами и апострофом '[a-zA-Z '-] +'? –
@Jota Это сработало отлично. Я соглашусь, если вы ответите – Carl