Возвращение всех совпадений из серии захватов регулярных выражений - PullRequest
1 голос
/ 23 марта 2011

У меня есть строка, которая содержит много полей, которые я хотел бы извлечь из нее.Я легко могу разобрать их в строке с регулярным выражением, но я бы хотел получить их все сразу.

Моя строка:

>sp|P31946-2|1433B_HUMAN Isoform Short of 14-3-3 protein beta/alpha OS=Homo sapiens GN=YWHAB

Я хотел бы использовать что-то вродеthis:

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

В основном, я бы хотел иметь одну строку кода для захвата всех этих атрибутов из строки ввода.Есть ли способ сделать это?

Ответы [ 2 ]

3 голосов
/ 23 марта 2011

MatchData # захватывает

f1,f2,f3,f4 = /(.)(.)(\d+)(\d)/.match("THX1138.").captures
f1    #=> "H"
f2    #=> "X"
f3    #=> "113"
f4    #=> "8"
2 голосов
/ 23 марта 2011

также

>> "THX1138".scan(/(.)(.)(\d+)(\d)/)
=> [["H", "X", "113", "8"]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...