我有一个字符串,其中包含很多我想从中提取的字段。 这些我可以很容易地从正则表达式解析,但我想一次抓住它们。从一系列正则表达式捕获返回所有匹配
我的字符串是:
>sp|P31946-2|1433B_HUMAN Isoform Short of 14-3-3 protein beta/alpha OS=Homo sapiens GN=YWHAB
我想用这样的:
id, entry, protein, organism, gene, existence, seq_version = (1..6).each do |i|
line[/^>sp\|(\w*)\|(\w*)\s(.*)\sOS=(.+)\sGN=(.+)\sPE=(\d*)\sSV=(\d*)/, i]
end
主要是,我只是想有一行代码来捕获所有的这些来自条目字符串的属性。有没有办法做到这一点?
其中一个主要的目标,为编写代码是使可读性和可维护性。试图将所有逻辑合并到一行代码中,都会违反这些目标,所以要小心,按照您的程序,您不要试图变得聪明或大胆,并且在将来您的代码难以理解,或者其他人必须重新访问代码以进行一些修改。当逻辑分布在多行时,代码很多时候仍然更具可读性。 – 2011-03-23 06:04:40
如果您提供了预期输出/捕获文本的样本,这将有很大帮助。您的示例正则表达式不正确,因此它不匹配。 – 2011-03-23 06:15:47
我将代码从单行转换为三行。道歉,如果它使得它更少“1337”。 – 2011-03-23 06:20:57