根据下划线的位置忽略字符串的一部分

问题描述 投票:0回答:1

我有一个实验条件列表,看起来像这个表中的左列:

------------------------------------------------------------------------
| 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。我需要它来制作一个将所有生物复制品(表示为c1c2c3)组合在一起的图形。

regex matlab regex-negation
1个回答
1
投票

您可以使用以下表达式:

(?<=_).*(?=_c\d)
  • (?<=_)_ Lookbehind。
  • .*匹配任何东西。
  • (?=_c\d)查看_c后跟数字。

正则表达式演示here

© www.soinside.com 2019 - 2024. All rights reserved.