Вопрос: RegExp | Добавлено: 11.08.09 16:36 |
Автор вопроса: ![]() |
Надо ограничить область действия регэкспа.
например <1>a</1> <2>b</2> <3>c</3> <4>d</4> <5>e</5> <6>f</6> <7>g</7> производить поиск и замену только в диапазоне <1>-</6> т.е. что-то типа регэкспа от регэкспа. как оформить? |
Ответы | Всего ответов: 16 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 8 Ответов: 42 |
Профиль | Цитата | #1 | Добавлено: 11.08.09 16:56 |
Найти в тексте номер конечного символа
j = 0: Do While j <= UBound(Text) If InStr("</6>", Left(Text, 4)) <> 0 Then n = j * 4 Shablon = Mid(Text, 4) j = j + 1: Loop а потом ограничить выделенным текстом TextBox.SelStart = 0 TextBox.SelLength = n |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 8 Ответов: 42 |
Профиль | Цитата | #2 | Добавлено: 11.08.09 16:57 |
вместо Shablon писать Text) сори) |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ICQ: 298826769 Вопросов: 53 Ответов: 1732 |
Профиль | Цитата | #3 | Добавлено: 11.08.09 17:50 |
мммм... мне надо регулярное выражение, оно же регэксп.
что-то типа: <1> ![]() |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 87 Ответов: 2795 |
Web-сайт: Профиль | Цитата | #4 | Добавлено: 12.08.09 00:27 |
мм диапазон символов случаем не так задается [1-6].. или это в Like так.. |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #5 | Добавлено: 12.08.09 03:11 |
Можно так
Символы < и > надо тоже эскейпить.
это при включеной опции Multiline Но тогда сюда же пройдут и варианты вроде
Чтоб это тоже корректно обрабатывалось, то как-то так
Может можно и как-то проще, не сильно глубоко с регулярными выражениями знаком... |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #6 | Добавлено: 12.08.09 03:13 |
Можно так
Символы < и > надо тоже эскейпить.
это при включеной опции Multiline Но тогда сюда же пройдут и варианты вроде
Чтоб это тоже корректно обрабатывалось, то как-то так
Может можно и как-то проще, не сильно глубоко с регулярными выражениями знаком... |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ICQ: 298826769 Вопросов: 53 Ответов: 1732 |
Профиль | Цитата | #7 | Добавлено: 12.08.09 08:26 |
![]() Winand пишет:
а это я не диапазон и указываю. тут имеется ввиду от текста "<1>" до текста </6>
мм диапазон символов случаем не так задается [1-6].. или это в Like так.. Artyom пишет:
Прокатывает и без них, я как понимаю, это просто определение текста...
Символы < и > надо тоже эскейпить. Я тут выглядел про рекурсивные регэкспы... параметр \N (N - положительное число. Соответствует n-ной запомненной подстроке. Вычисляется путем подсчета левых круглых скобок) не могу сообразить, как применить. так бы в первых скобках прописал ограничение, а во вторых конкретно строку поиска. Кто-нибудь даст простенький пример использования? |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #8 | Добавлено: 12.08.09 20:21 |
Кто-нибудь даст простенький пример использования?
тут все достаточно просто.. эта фича, как правило, юзается в опережающей или ретроспективной(позитивной и негативной) проверках.. Применительно к вопросу топика эту фичу можно заюзать следующим образом:
В данном случае я использовал опережающую и ретроспективную позитивные проверки.. В группе с индексом "0" будет находиться искомая буква, а в группе с индексом "1" будет лежать цифра внутри тега. Примечательно то, что варианты типа:
тут не прокатят. |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #9 | Добавлено: 13.08.09 03:21 |
Дао регулярных выражений... |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ICQ: 298826769 Вопросов: 53 Ответов: 1732 |
Профиль | Цитата | #10 | Добавлено: 13.08.09 13:24 |
2EROS
Вроде то, что и искал, только вычисляются регэкспы через MS VBscript RegExp, так что
в общем проще наверное спросить, как лучше распарсить регэкспом настоящую строку:
вместо localhost может быть любой другой адрес, стран может быть от 0 и до фига... надо чтоб названия стран попали в одну из групп регэкспа. Посоветуйте что-нибудь, мозг вообще закипел.. |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ICQ: 298826769 Вопросов: 53 Ответов: 1732 |
Профиль | Цитата | #11 | Добавлено: 13.08.09 15:22 |
вот эдакий подходит, но он прокатывает только в перле, для JScript/VBScript не канает: в них нет просмотра назад, только вперед.... |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #12 | Добавлено: 14.08.09 08:41 |
Я с это хренью, MS VBscript RegExp, никогда не работал и надеюсь, не придется.. так что сорри, тут я ничем не помогу.. |
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ICQ: 298826769 Вопросов: 53 Ответов: 1732 |
Профиль | Цитата | #13 | Добавлено: 14.08.09 08:52 |
но хотя бы подсказать можешь, если я вопрос вот так разверну:
как выполнить регэксп
только для строки, в которой есть слово "страна"? и все это без обратного просмотра. ![]() боюсь, пока я прочитаю всего Фридла - желание дописывать прогу у меня пропадет. |
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #14 | Добавлено: 14.08.09 15:04 |
хм.. Ты говоришь, что обратный(ретроспективный) поиск не поддерживается и в тоже время хочешь написать выражение в котором идет проверка наличие слова "страна" ПЕРЕД искомой строкой.. ты сам себе противоречишь. |
Номер ответа: 15 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #15 | Добавлено: 14.08.09 15:09 |
Кроме того мне кажется что ты ошибаешься на счет поддержки ретроспективного поиска.. проверь этот паттерн
|
|