Извлеките подстроку из строки в Ruby, используя регулярное выражение
Как извлечь подстроку из строки в Ruby?
Пример:
String1 = "<name> <substring>"
Я хочу извлечь substring из String1 (т.е. все в пределах последнего вхождения < и >).
Ответ 1
String1.scan( /<([^>]*)>/).last.first
scan создает массив, который для каждого <item> в String1 содержит текст между < и > в одноэлементном массиве (потому что, когда он используется с группами, содержащими регулярные выражения, scan создает массив, содержащий захваты для каждого совпадения). last дает вам последний из этих массивов и first, затем выдает в нем строку.
Вы можете использовать регулярное выражение для этого довольно легко...
Разрешение пробелов вокруг слова (но не их сохранение):
str.match(/< ?([^>]+) ?>\Z/)[1]
Или без допустимых пробелов:
str.match(/<([^>]+)>\Z/)[1]
Ответ 4
Вот несколько более гибкий подход с использованием метода match. При этом вы можете извлечь более одной строки:
s = "<ants> <pants>"
matchdata = s.match(/<([^>]*)> <([^>]*)>/)
# Use 'captures' to get an array of the captures
matchdata.captures # ["ants","pants"]
# Or use raw indices
matchdata[0] # whole regex match: "<ants> <pants>"
matchdata[1] # first capture: "ants"
matchdata[2] # second capture: "pants"