你精通正则表达式吗?不妨进来瞧瞧!
最近遇到一个问题,就是想从有一定规则的字符串中提取信息!样本如下:
AC****T01714
XX****ID****T01714
XX****DT****07.03.1996 (created); ewi****DT****04.09.1996 (updated); ewi****CO****Copyright (C), Biobase GmbH
XX****FA****HOXA10 PL2
XX****SY****PL2.
XX****OS****human, Homo sapiens****OC****eukaryota; animalia; metazoa; chordata; vertebrata; tetrapoda; mammalia;****OC****eutheria; primates
XX****HO****Abd-B (Drosophila)
XX****CL********C0006****homeo;****3.1.1.1.7.2****.
XX****SZ****94 AA; 11.5 kDa (gene)
XX****SQ****MCQGNSKGENAANWLTAKSGRKKRCPYTKHQTLELEKEFLFNMYLTRERRLEISRSVHLT****SQ****DRQVKIWFQNRRMKLKKMNRENRIRELTANFNFS
XX****SC****edited SwissProt #P31260
XX****FT****1 3****replaced by 1-405 in splice variant PL1.****FT****17 76****homeo domain.****XX****CP****myelomonocytic cells and other hematopoietic cells****[1]****XX****FF****broader expression pattern than the long splice variant PL1****[1]****.
XX****DR****EMBL:****X58430****; HSHOX18.
XX****RN [1]****RX****MEDLINE;****91288229****.****RA********Lowney P., Corral J., Detmer K., Lebeau M. M., Deaven L., Lawrence H. J.,********RA********Largman C.********RT****A human Hox 1 homeobox gene exhibits myeloid-specific expression of****RT****alternative transcripts in human hematopoietic cells.****RL****Nucleic Acids Res. 19:3443-3449 (1991).
XX
//****
说明:
打印"****"的地方是我加上,以便间隔开容易识别字符串。除了"****",就都是所需要提取的字符串了。
基本模式是:key-value形式的(如:AC****T01714XX,FA****HOXA10 PL2XX)键值(如AC,FA)是可枚举的,放在连表或数组里的,但是也有不符合此格式的,(如FT****1 3****replaced by 1-405 in splice variant PL1.****FT****17 76****homeo domain.****XX),它的值有多项,分开写的!!而且出现两个相同的key(如FT)
我想这种情况最好的办法是用正则表达式提取吧!
试问各位:如何写这个Pattern,才能提取出或得到符合格式的数据(key-value)呢?(保证key只出现一次,然后value包含所有的key的值)
非常感谢各位先!