2012-06-20 3 views
0

Я хочу, чтобы получить все символ до не является прописными но от конца начала. (или справа налево)Regex: Как начать поиск с конца строки

blab blab 12 34 Это тест!

Мне нужно This is a test!.

Это то, что мне удалось найти:

^.*?(?=[A-Z]) 

Но она возвращает blab blab 12 34

+1

вы имеете в виду: '/ [A-Z] [^ A-Z] * $ /'? –

+0

@ rubberboots Да! Я боролся, как использовать знак доллара. Омг было очень легко ...! Благодаря! Если это возможно, добавьте его в качестве ответа, чтобы я мог его принять. – xperator

+0

Понятно, победитель Yossi появился раньше, поэтому он выиграл игру. Я соглашусь с поражением ;-) –

ответ

2

Используйте следующее регулярное выражение:

irb(main):001:0> regex = /([A-Z][^A-Z]*)$/ 
irb(main):002:0> "blab blab 12 34 This is a test!".match regex 
=> #<MatchData "This is a test!" 1:"This is a test!"> 
1

ОК, я добавлю, что в качестве ответа , вероятно, развивая его в другие варианты позже. Простое решение должно быть sth. как:

[A-Z][^A-Z]*$ 

испытаний (в Perl):

print $1 if 'blab blab 12 34 This is a test!' =~ /([A-Z][^A-Z]*)$/; 

возвращается:

This is a test! 

Чтобы решить эту проблему, шаблон должен быть якорь в конце строки ($).

С уважением

БВУ

 Смежные вопросы

  • Нет связанных вопросов^_^