#string #r #text
#строка #r #текст
Вопрос:
У меня есть текстовый файл длиной около 40 кб. в текстовом файле нет разделителей или структуры. Мне нужно определить текстовую строку в этой длинной строке длиной 15 символов, но я знаю, что символы 16 и 17 равны символам 14 и 15 соответственно. Есть идеи, как это можно сделать с помощью r?
Комментарии:
1. Как строка из 15 символов имеет 16-й и 17-й символы?
2. Вы должны предоставить четкий пример ввода и желаемого вывода. Вероятно, вам также следует упростить проблему, а не публиковать весь файл, с которым вы на самом деле работаете.
Ответ №1:
Если я правильно понимаю, вот пример строки.
a<-"aaabbbcccddddfffeee"
И предположим, вы хотите извлечь строку из 6 символов, где 5-й и 6-й символы соответствуют следующим двум символам после строки. Вы можете найти это с помощью регулярного выражения типа
regmatches(a, regexpr("(.{4}(.{2}))\2", a))
Однако это также захватывает два дополнительных символа после совпадения. Вы можете обрезать последние два символа или использовать захваченные совпадения. Я написал вспомогательную функцию regcapturedmatches, которая немного упрощает задачу. Вы могли бы сделать
regcapturedmatches(a, regexpr("(.{4}(.{2}))\2", a, perl=T))[[1]][,1]
чтобы получить только совпадение.