Вопрос или проблема
Я пытаюсь использовать Vim для поиска с помощью / строк, которые начинаются и заканчиваются определённым образом. В частности, мне нужны строки, которые начинаются с символа ‘>’ и заканчиваются без символов “RNA.” Например, я хотел бы найти эту строку
>NM_001010867.4 Homo sapiens iron-sulfur cluster assembly factor IBA57 (IBA57),transcript variant 1, mRNA; nuclear gene for mitochondrial product
в поиске, но не находить эту строку
>NR_107042.1 Homo sapiens microRNA 8075 (MIR8075), microRNA
Я долго искал решение, но так и не смог его найти. Буду очень признателен за помощь.
/^>.*[^R][^N][^A]$
Также можно использовать grep (без начального /
)
:/>.*[^(RNA.)][\n]
Из этих строк
helo
hello
>helloRNA.
>helloN00
>hell]RNA.
>twm0
выбраны только “>helloN00” и “>twm0”
очевидно
- /> означает, что строка должна начинаться с ‘>’
- .* означает, что будет соответствовать любому количеству символов
- [^(RNA.)] не заканчивать ‘^’ этими строками
- [\n] конец строки
Ответ или решение
Для поиска строк в Vim, которые начинаются с определенного символа и не оканчиваются на заданные подстроки, необходимо использовать регулярные выражения. В вашем случае мы ищем строки, которые начинаются с символа >
и не заканчиваются на «RNA».
Шаг 1: Определение регулярного выражения
Для выполнения этой задачи регулярное выражение будет выглядеть следующим образом:
/^>.*\(RNA\)\|$/
Проанализируем регулярное выражение по частям:
^>
— указывает на начало строки с символом>
..*
— означает, что после символа>
могут следовать любые символы (включая отсутствие таковых).\(RNA\)
— группа, которая ищет подстроку «RNA».\|$
— позволяет завершить строку (то есть, не находить строки, которые заканчиваются на «RNA»).
Таким образом, все вместе это выражение ищет строки, которые начинаются с >
, но не заканчиваются на «RNA».
Шаг 2: Использование регулярного выражения в Vim
Теперь, когда у нас есть регулярное выражение, мы можем использовать его в Vim. Откройте файл, в котором вы хотите выполнить поиск, и введите следующее:
/^>.*\v([^R][^N][^A]$|$)
Разбор нового регулярного выражения:
\v
— включает режим "very magic", что упрощает синтаксис и делает его более читаемым.[^R][^N][^A]$
— указывает, что строка не должна заканчиваться на «RNA». Это означает, что последними символами не могут быть R, N или A, когда они стоят на последних позициях строки.
Теперь, когда вы выполните поиск с этим выражением, Vim отобразит все строки, которые соответствуют вашим критериям.
Шаг 3: Проверка результатов
Проверьте ваш файл на наличие строк, которые соответствуют условиям. Например, строки, такие как:
>NM_001010867.4 Homo sapiens iron-sulfur cluster assembly factor IBA57 (IBA57),transcript variant 1, mRNA; nuclear gene for mitochondrial product
>NR_107042.1 Homo sapiens microRNA 8075 (MIR8075), microRNA
>helloN00
>twm0
В этом случае вам будут показаны только те строки, которые начинаются с >
и не заканчиваются на «RNA».
Заключение
Используя предложенные регулярные выражения, вы сможете эффективно находить и фильтровать данные в Vim. Убедитесь, что вы понимаете структуру регулярных выражений, так как это значительно упростит задачу по поиску и манипуляциям с текстом в вашем коде или данных. Если у вас возникли дополнительные вопросы по использованию Vim или регулярных выражений, не стесняйтесь спрашивать!