Я знаю, что опаздываю на вечеринку здесь, однако, еще один отличный вариант - это Git Bash.
Есть ответы, как сделать то, что вам нужно
Также найти последнее вхождение числа:
x = 'blah_blah.do.dah[4543]junk_junk'
x.rindex(/\d/)
В целом это казалось самым чистым и простым способом сделать то, что мне нужно. Спасибо всем за то, что указали мне правильное направление!
index = file.rindex(/\d/)
if(index) then
p file[0 , index+1]
end
irb(main):068:0> "blah_blah.do.dah[4543]junk_junk".match(/(.+\d)/)[1]
=> "blah_blah.do.dah[4543"
puts "blah_blah.do.dah[4543]junk_junk"[/.*\d+/]
#returns "blah_blah.do.dah[4543"
с использованием типа rindex:
x = "blah_blah.do.dah[4543]junk_junk"
x.rindex(/\d/)
puts "#{$`}#{$&}"
#also returns "blah_blah.do.dah[4543"
Это регулярное выражение должно работать:
(.*(?=\d)\d)[^\d]*$
Вы должны использовать что-то вроде:
result = your_text.gsub(/(.*(?=\d)\d)[^\d]*$/, '\\1')
Объяснение:
(. * (? = \ D) \ d)
- это группа вещи, которую вы хотите спасти
. *
.
все, кроме разрыва строки, *
означает 0 или более раз (? = \ d)
означает , пока вы не сможете сопоставить a \ d
, который является цифрой \ d
означает, что эта цифра также соответствует! [^ \ d] + $
- это часть, которую вы не хотите сохранять
[^ \ d] *
соответствует всему, что не соответствует \ d
, а *
снова 0 или более раз $
- конец строки Альтернативой может быть простая замена [^ \ d] + $
ничем
Это может быть регулярное выражение, которое вы ищете:
s/\D*$//
Это регулярное выражение соответствует всем нецифровым цифрам в конце строки, начиная с последней цифры или с начала строки (если она вообще не содержит цифр), и удаляет все совпадающие. Точнее, \ D *
- это жадное соответствие для максимально возможного количества нецифровых цифр (ноль или более). $
представляет конец строки.
В Ruby вы можете использовать метод gsub строки для поиска и замены с использованием регулярного выражения:
x = 'blah_blah.do.dah[4543]junk_junk'
y = x.gsub(/\D*$/, '')
Для получения дополнительной информации о регулярные выражения и Ruby,
Я предполагаю, что вы хотите включить последний символ "]" после числа
Вот мой ответ:
Original_Text = "blah_blah.do.dah[4543]junk_junk"
Result___Text = Original_Text.gsub(Regexp.new("(.*\\[[0-9]+\\])[^0-9]*$"), '\1')
puts Result___Text
Если нет, попробуйте следующее:
Original_Text = "blah_blah.do.dah[4543]junk_junk"
Result___Text = Original_Text.gsub(Regexp.new("(.*[0-9]+)[^0-9]*$"), '\1')
puts Result___Text