根据下划线的位置忽略字符串的一部分
Ignoring part of string based on position of underscore
我有一个实验条件列表,看起来像这个table中的左栏:
------------------------------------------------------------------------
| 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
)组合在一起的图形。
您可以使用以下表达式:
(?<=_).*(?=_c\d)
(?<=_)
回顾 _
。
.*
匹配任何内容。
(?=_c\d)
前瞻 _c
后跟一个数字。
正则表达式演示 here。
我有一个实验条件列表,看起来像这个table中的左栏:
------------------------------------------------------------------------
| 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
)组合在一起的图形。
您可以使用以下表达式:
(?<=_).*(?=_c\d)
(?<=_)
回顾_
。.*
匹配任何内容。(?=_c\d)
前瞻_c
后跟一个数字。
正则表达式演示 here。