![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: May 2009
Сообщений: 63
|
Здравствуйте. Вопрос такой:
Как составить регулярное выражение соответствующее тексту, не содержащиму одну из нескольких строк, например следующее выражение соответствует тексту в котором нет символов "a" или "b" или "c": а мне нужно что-то наподобие: теоретически должно соответствовать тексту в котором нет строки "not", "at" или "all". Но это выражение не работает ![]()
__________________
Все не так просто, как кажется... все гораздо проще... Последний раз редактировалось Аллиас; 15.08.2009 в 02:25. |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Последний раз редактировалось udaaff; 15.08.2009 в 01:49. |
|
|||||
|
Регистрация: May 2009
Сообщений: 63
|
udaaff,
Спасибо, выражение работает, только оно очень сложное для моего понимания (не совсем понятно зачем аж 3е скобок).
__________________
Все не так просто, как кажется... все гораздо проще... |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
"Скобки" называются группами. (hot|at|all) -- группа определяет гуппы символов с оператором перестановок. Далее (?=...) -- негативная группа забегания вперед. И последняя группа ()* для применения квантификатора.
http://help.adobe.com/ru_RU/ActionSc...0204-7e9a.html |
|
|||||
|
Регистрация: May 2009
Сообщений: 63
|
Согласно написанному в приведенной статье приведенное ниже выражение pat должно соответствовать "подстроке 'для' перед которой нету слова 'только '"; следовательно replace должен выполнится только для первой строки, а вторую вернуть без изменений, но почему-то модифицируются обе строки:
var pat:RegExp = /(?!только )(для)/gis; var str:String = "текст для replace"; var str2:String = "текст только для replace"; trace(str.replace(pat, "only $1")); //текст only для replace trace(str2.replace(pat, "only $1")); //текст только only для replace //а должно быть: текст только для replace //ведь правда?
__________________
Все не так просто, как кажется... все гораздо проще... Последний раз редактировалось Аллиас; 15.08.2009 в 16:11. |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
В данном случае надо использовать забегание назад. В хэлпе не нашол, но работает:
Потому-что в твоем случае паттерн получается безсмысленный: ищем строку "для", которая не должна быть строкой "только ". |
|
|||||
|
Регистрация: May 2009
Сообщений: 63
|
udaaff, Спасибо Оргомное, все работает как надо. Теперь я кажется понимаю, что значит "группа просмотра вперед" и "группа просмотра назад".
__________________
Все не так просто, как кажется... все гораздо проще... |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|