Существует ли регулярное выражение для добавления первых 4 символов в конец строки и последних 4 символов в начало строки? - PullRequest
3 голосов
/ 05 апреля 2019

У меня есть несколько строк, которые мне нужно изменить. Это белковые последовательности. Как мне скопировать первые 4 символа строки в конец строки, а также скопировать последние 4 символа в начало строки? Строки являются переменными, что усложняет это, например:

> X

LTGLGIGTGMAATIINAISVGLSAATILSLISGVASGGAWVLAGAKQALKEGGKKAGIAF

> Y

LVATGMAAGVAKTIVNAVSAGMDIATALSLFSGAFTAAGGIMALIKKYAQKKLWKQLIAA

Кроме того, как я могу исключить строки с '>' в начале (это имена соответствующей последовательности)?

Кто-нибудь знает регулярное выражение, которое позволит этому работать?

Я уже пробовал некоторые решения для регулярных выражений, но я не очень разбираюсь в подобных вещах, и я могу найти конечную строку, но не могу ее заменить:

Найти:

(...) $

Заменить:

^ $ 2 $ 1"

Пример того, чего я хочу достичь:

> 1

АБВГДЕЖЗИКЛМНОПРСТУФХЧШЭЮЯ

становится:

> 1

WXYZ АБВГДЕЖЗИКЛМНОПРСТУФХЧШЭЮЯ ABCD

Спасибо

Ответы [ 3 ]

4 голосов
/ 05 апреля 2019

Попробуйте выполнить поиск в режиме регулярных выражений по следующему шаблону:

^([A-Z]{4}).*([A-Z]{4})$

Затем замените первые четыре и последние четыре замененных символа:

$2$0$1

Демо

3 голосов
/ 05 апреля 2019

Вы можете использовать регулярное выражение ниже.

^(([A-Z]{4})([A-Z]*)([A-Z]{4}))$

^ asserts the position at the start of the line, so nothing can come before it.
( is the start of a capture group, this is group 1.
( is the start of a capture group, this is group 2. This group is inside group 1.
[A-Z]{4} means exactly 4 capital characters from A to Z.
) is the end of capture group 2.
( is the start of a capture group, this is group 3.
[A-Z]* matches capital characters from A to Z between zero and infinite times.
) is the end of capture group 3.
( is the start of a capture group, this is group 4.
[A-Z]{4} means exactly 4 capital characters from A to Z.
) is the end of capture group 4.
$ asserts the position at the end of the line, so nothing can come after it.

Посмотрите, как это работает с заменой здесь: https://regex101.com/r/W786uL/3.

$4$1$2

$4 means put capture group 4 here. Which is the last 4 characters.
$1 means put capture group 1 here. Which is everything in the entire string.
$2 means put capture group 2 here. Which is the first 4 characters.
0 голосов
/ 05 апреля 2019

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

^(.{4})(.*?)(.{4})$
  • ^ - начало жала
  • (.{4}) - соответствует любому символу, кроме новой строки
  • (.*?) - соответствует любому символу ноль или более раз (ленивый режим)
  • $ - конец строки

Демо

...