Страницы

Поиск по вопросам

суббота, 4 января 2020 г.

Регулярное выражение: найти все числа не по краям строки

#регулярные_выражения #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]

Комментариев нет:

Отправить комментарий