#регулярные_выражения #ruby
Здравствуйте. Помогите, пожалуйста, составить регулярное выражение. Например: test = '12asiudas8787hajshd986q756tgs87ta7d6-12js01' test.scan(регулярное_выражение) В результате должно получиться ["8787", "986", "756", "87", "7", "6", "12"] Иными словами регулярное выражение как /\d+/, только чтобы числа по краям строки игнорировались.
Ответы
Ответ 1
Можно поступить следующим образом test = '12asiudas8787hajshd986q756tgs87ta7d6-12js01' arr = [] test.scan(/(?<=[^\d])(\d+)(?=[^\d])/) do |match| arr << match[0] end p arrОтвет 2
Помогут positive look-ahead и positive look-behind: /(?<=\D)\d+(?=\D)/Ответ 3
Reg1=/ [[:digit:]]+ [^[:digit:]]+([[:digit:]]+) [^[:digit:]]+([[:digit:]]+) [^[:digit:]]+([[:digit:]]+) [^[:digit:]]+([[:digit:]]+) [^[:digit:]]+([[:digit:]]+) [^[:digit:]]+([[:digit:]]+) [^[:digit:]]+([[:digit:]]+)/x line = '12asiudas8787hajshd986q756tgs87ta7d6-12js01' m = Reg1.match(line) puts m[1..7]
Комментариев нет:
Отправить комментарий