![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Razerio |
![]() ![]()
Сообщение
#1
|
Студент ![]() Группа: Новичок Сообщений: 13 Регистрация: 16.1.2013 Пользователь №: 3677 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
Никак не получается составит работающее регулярное выражение.
Есть примерный текст:
Из текста нужно вытащить все слова начинающиеся со звёздочки(*), кроме тех, что находятся между "<a" и "</a>". То есть в данном случаи должны найтись слова: *must *materials *distribution А остальные должны быть пропущены. Все слова найти довольно просто "[*]+[A-Za-z]+", но вот найти только те, которые вне HTML тегов незнаю как. P.S. Для работы с регулярками использую дефолтный QRegExp (Qt 4.8.4). |
|
|
![]() |
iReset |
![]()
Сообщение
#2
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 178 Регистрация: 6.6.2012 Пользователь №: 3414 Спасибо сказали: 23 раз(а) Репутация: ![]() ![]() ![]() |
Никак не получается составит работающее регулярное выражение. У меня получилось так:...
Выражение написано с условием того, что тег <a> не имеет вложенности и имеет параметр (например, href), т.е. не "<a>". Выражение "(\\*\\w+\\b)" хорошо было бы доработать с учётом того, что могут быть фразы типа "111*222" или "привет*мир". Но тут нужны более чёткие входные условия. При необходимости могу разъяснить выражение по частям. это кость в горле Регулярных выражений, с помощью них невозможно отслеживать "парные скобки", т.е. элементы играющие их роль Ну невозможно, это все-таки очень жестко сказано. Даже с помощью регулярных выражений Qt можно составить выражение, позволяющее производить поиск на любой, но, правда, заранее известный, уровень вложенности.О вложенности в других языках В Perl возможен просмотр на любой, неизвестный заранее, уровень вложенности с помощью динамических регулярных выражений, "(??{$re})". В .NET это возможно с помощью конструкции-счётчика "(?<DEPTH>)". В PHP можно использовать рекурсивные регулярные выражения "(?R)". |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 18.2.2025, 7:23 |