Я пытаюсь извлечь строки с помощью регулярных выражений.Например:: [Customer].[Yearly Income], [Sales Territory].[Sales Territory], [Customer].[Total Children]
[Customer].[Yearly Income], [Sales Territory].[Sales Territory], [Customer].[Total Children]
Любая помощь приветствуется. Заранее спасибо.
Если у вас есть текст в строке с именем query, вы можете сделать:
query
query.scan(/DESCENDANTS\((.+),,/).flatten => ["[Customer].[Yearly Income]", "[Sales Territory].[Sales Territory]", "[Customer].[Total Children]"]
Некоторые заметки:
\(
(.+)
()
scan
flatten
/DESCENDANTS\(([^,]+),,/
Посмотреть на рубуляр
. +?более безопасен, он работает правильно, если SQL находится в одной строке.
query.scan(/DESCENDANTS\((.+?),,/).flatten
Вот более уродливый вариант, который использует split: разделить на "DESCENDANTS (" и ",," и взять любую другую подстроку:
split
s.split(/DESCENDANTS\(|,,/).each_with_index.inject([]) {|m,(e,i)| m << e if i.odd?; m}