Игнорирование части строки на основе позиции подчеркивания - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть список экспериментальных условий, которые выглядят как левый столбец в этой таблице:

------------------------------------------------------------------------
| Input                                    | Output                    |
------------------------------------------------------------------------
| ID1_sWT_c1_ext_x1                        | sWT                       |
| ID29_s3KO_pNodC_VcCDA_c3_ext_x1          | s3KO_pNodC_VcCDA          |
| ID47_s3KO_pTet_NodC_VcCDA_50ng_c3_ext_x1 | s3KO_pTet_NodC_VcCDA_50ng |
------------------------------------------------------------------------

Я хотел бы получить вывод в правом столбце с помощью регулярных выражений (это необходимо!). В основном игнорируйте все до и, в том числе, первое подчеркивание (_) и игнорируйте все после третьего до последнего подчеркивания, включая подчеркивание. Я немного попробовал и придумал решение, которое разбивает все на две группы и игнорирует перед первым подчеркиванием:

 (?<=\_).*[A-Za-z0-9_]*(_[^_]*_[^_]*_[^_]*)$

Теперь я застрял и задавался вопросом, знает ли кто-нибудь хорошее решение.

Я работаю с Matlab. Мне нужно создать фигуру, которая группирует все биологические копии (обозначенные c1, c2 и c3) вместе.

1 Ответ

0 голосов
/ 05 сентября 2018

Вы можете использовать следующее выражение:

(?<=_).*(?=_c\d)
  • (?<=_) Взгляд назад для _.
  • .* Совпадение с чем угодно.
  • (?=_c\d) В ожидании _c, за которым следует цифра.

Regex demo здесь .

...