Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   регулярное выражение последнего вхождения строки (http://www.flasher.ru/forum/showthread.php?t=194700)

zorexundra 20.02.2013 18:45

регулярное выражение последнего вхождения строки
 
Здравствуйте! Подскажите, пожалуйста, кто знает: как в регулярном выражении задать последнее вхождение строки. Т.е. есть строка:
"Слово Слово Слово Слово Нужное слово Слово"
Нужно выделить Нужное слово. lastIndexOf не предлагать. Нужен патерн регулярного выражения.

yasha005 20.02.2013 19:03

Регулярные выражения уместны в том случае если нужное слово является неизвестным, если же оно известно, тогда лучше индэксоф использовать или ластиндэксоф.

Если же данное слово не известно, то должно быть явное условие при котором его можно найти, например это слово обрамляется какими-нибудь определёнными тэгами, или ещё что-то. В любом случае нужно условие, на основе которого и строится регулярное выражение.

zorexundra 20.02.2013 19:06

yasha005, это схематичный пример, для пояснения сути вопроса: как исключить повторяющиеся блоки слов перед искомым? Тобишь если я задам:
Код AS3:

var myString:String = "Слово Слово Слово Слово Нужное слово Слово"
var myRegExp:RegExp = new RegExp('(Слово)*'+(?P<par>.*?)+'Слово$',"i, g");
var result:Array = myRegExp.exec(myString);
trace(result.par); // Слово Слово Слово Нужное слово !, а мне нужно Нужное слово!!!

На http://learn.javascript.ru/regexp-specials обозвали такое поведение регулярного выражения ЖАДНЫМ. Как умерить эту жадность?

GBee 20.02.2013 23:20

Вложений: 1
судя по http://gskinner.com/RegExr/
RegExp: /Нужное слово/

:о)

Вложение 29149

zorexundra 21.02.2013 00:33

GBee, это не решение. Если я заранее знаю "result.par" зачем мне использовать регулярные выражения?
N.B.: конструктор, наверное, очень практичен и я не премину воспользоваться им. Спасибо!

Wolsh 21.02.2013 02:00

Вас обманули. Дело в пробелах.

— Видишь символ?
— Нет...
— И я нет. А он – есть.

Код AS3:

                        var myString:String = "Слово Слово Слово Слово Нужное слово Слово"
                        var myRegExp:RegExp = /(Слово\s)*(?P<par>.*?)\sСлово$/ig;
                        var result:Object = myRegExp.exec(myString);
                        if (result) trace(result.par);


zorexundra 21.02.2013 15:05

Wolsh, спасибо за квалифицированную помощь!
Окажите ещё любезность, подскажите: если разделителем служит не пробел, а любое количество произвольных символов, как в таком случае будет выглядеть патерн?
Пусть даже с исключением искомого.

Wolsh 21.02.2013 15:15

Но тогда перед Нужным словом ОБЯЗАНО быть Слово.
Иначе непонятно, откуда начинается Нужное))
Код AS3:

var myString:String = "Слово25 СловоНенужноеСлово Левое какое-то вообщеСловоНужное словоСлово"
var myRegExp:RegExp = /.*(Слово\s*)+(?P<par>.*?)\s*Слово$/ig;
var result:Object = myRegExp.exec(myString);
if (result) trace(result.par);


zorexundra 21.02.2013 15:39

Wolsh, это то, что нужно. Спасибо!


Часовой пояс GMT +4, время: 01:04.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.