Страница: 1 | 2 |
Вопрос: RegExp
Добавлено: 11.08.09 16:36
Автор вопроса:
Arseny | ICQ: 298826769
Надо ограничить область действия регэкспа.
например
<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
Автор ответа: Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #3
Добавлено: 11.08.09 17:50
мммм... мне надо регулярное выражение, оно же регэксп.
что-то типа:
<1>.*?)</6> - и дальнейший поиск/замену вести именно из полученного результата.
Номер ответа: 4
Автор ответа: Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #4
Добавлено: 12.08.09 00:27
мм диапазон символов случаем не так задается [1-6].. или это в Like так..
Номер ответа: 5
Автор ответа: Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #5
Добавлено: 12.08.09 03:11
Можно так
Символы < и > надо тоже эскейпить.
это при включеной опции Multiline
Но тогда сюда же пройдут и варианты вроде
Чтоб это тоже корректно обрабатывалось, то как-то так
Может можно и как-то проще, не сильно глубоко с регулярными выражениями знаком...
Номер ответа: 6
Автор ответа: Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #6
Добавлено: 12.08.09 03:13
Можно так
Символы < и > надо тоже эскейпить.
это при включеной опции Multiline
Но тогда сюда же пройдут и варианты вроде
Чтоб это тоже корректно обрабатывалось, то как-то так
Может можно и как-то проще, не сильно глубоко с регулярными выражениями знаком...
Номер ответа: 7
Автор ответа: Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #7
Добавлено: 12.08.09 08:26
... я открыл ящик пандоры...
мм диапазон символов случаем не так задается [1-6].. или это в Like так..
Символы < и > надо тоже эскейпить.
Я тут выглядел про рекурсивные регэкспы... параметр \N (N - положительное число. Соответствует n-ной запомненной подстроке. Вычисляется путем подсчета левых круглых скобок)
не могу сообразить, как применить. так бы в первых скобках прописал ограничение, а во вторых конкретно строку поиска.
Кто-нибудь даст простенький пример использования?
Номер ответа: 8
Автор ответа: EROS
Вопросов: 58
Ответов: 4255
Профиль | | #8
Добавлено: 12.08.09 20:21
тут все достаточно просто.. эта фича, как правило, юзается в опережающей или ретроспективной(позитивной и негативной) проверках..
Применительно к вопросу топика эту фичу можно заюзать следующим образом:
В данном случае я использовал опережающую и ретроспективную позитивные проверки.. В группе с индексом "0" будет находиться искомая буква, а в группе с индексом "1" будет лежать цифра внутри тега. Примечательно то, что варианты типа:
тут не прокатят.
Номер ответа: 9
Автор ответа: Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #9
Добавлено: 13.08.09 03:21
Дао регулярных выражений...
Номер ответа: 10
Автор ответа: Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #10
Добавлено: 13.08.09 13:24
2EROS
Вроде то, что и искал, только вычисляются регэкспы через MS VBscript RegExp, так что
в общем проще наверное спросить, как лучше распарсить регэкспом настоящую строку:
вместо localhost может быть любой другой адрес, стран может быть от 0 и до фига... надо чтоб названия стран попали в одну из групп регэкспа.
Посоветуйте что-нибудь, мозг вообще закипел..
Номер ответа: 11
Автор ответа: Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #11
Добавлено: 13.08.09 15:22
вот эдакий подходит, но он прокатывает только в перле, для JScript/VBScript не канает: в них нет просмотра назад, только вперед....
Номер ответа: 12
Автор ответа: EROS
Вопросов: 58
Ответов: 4255
Профиль | | #12
Добавлено: 14.08.09 08:41
Я с это хренью, MS VBscript RegExp, никогда не работал и надеюсь, не придется.. так что сорри, тут я ничем не помогу..
Номер ответа: 13
Автор ответа: Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #13
Добавлено: 14.08.09 08:52
но хотя бы подсказать можешь, если я вопрос вот так разверну:
как выполнить регэксп
только для строки, в которой есть слово "страна"?
и все это без обратного просмотра.
боюсь, пока я прочитаю всего Фридла - желание дописывать прогу у меня пропадет.
Номер ответа: 14
Автор ответа: EROS
Вопросов: 58
Ответов: 4255
Профиль | | #14
Добавлено: 14.08.09 15:04
хм.. Ты говоришь, что обратный(ретроспективный) поиск не поддерживается и в тоже время хочешь написать выражение в котором идет проверка наличие слова "страна" ПЕРЕД искомой строкой.. ты сам себе противоречишь.
Номер ответа: 15
Автор ответа: EROS
Вопросов: 58
Ответов: 4255
Профиль | | #15
Добавлено: 14.08.09 15:09
Кроме того мне кажется что ты ошибаешься на счет поддержки ретроспективного поиска.. проверь этот паттерн