Регулярные выражения...

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

PUNK-GRUNGER
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 145
Зарегистрирован: 10.06.2004 (Чт) 14:22
Откуда: Украина, Николаев

Регулярные выражения...

Сообщение PUNK-GRUNGER » 02.07.2006 (Вс) 17:12

Допустим есть строка:

Код: Выделить всё
Dim my_str As String = "<p>тут кусочек текста</p><p>опять текст<br>всяка</p>[text]<p>опа! очень важно тут<b>хехе</p>[:text]<p>и опять фигня какая-то</p>"


Необходимо:
Заменить "[text]" и "[:text]" на "<textarea>" и "</textarea>" соответственно, причем чтобы внутри содержимого, т.е. строка "<p>опа! очень важно тут<b>хехе</p>" была "вычищена" от тегов (т.е. в textarea тег <BR> отображается в явном виде).

Что я делаю:
Заменить на <textarea></textarea> очень легко:

Код: Выделить всё
MsgBox(System.Text.RegularExpressions.Regex.Replace(my_str, "\[text\](.*)\[:text\]", "<textarea>$1</textarea>"))


А как из $1 вырезать все теги (по маске "<[^\]]*>")? Достаточно долго мучаюсь, ответа не нашел. Есть подозрение заюзать Match, Mathces.. но кавырял, кавырял и ничего не получилось.

P.S. Вопрос именно по Vb, т.к. пишу IRC-бота.. и пример с HTML - лишь пример ) Да и регулярные выражения ... вобщем все-таки сюда запостил. ИМХО, куда надо.
«Каждому программисту ЭВМ выдает то, что он заслуживает» (c)

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 02.07.2006 (Вс) 17:14

а че реплейс не помогает?
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

PUNK-GRUNGER
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 145
Зарегистрирован: 10.06.2004 (Чт) 14:22
Откуда: Украина, Николаев

Сообщение PUNK-GRUNGER » 02.07.2006 (Вс) 17:21

Мне нужно вырезать теги ТОЛЬКО В $1... т.е. в тексте между [text][:text]

Пытался я еще рекурсию прикрутить, т.е. вырезать кусочек [text][:text], обрабатывать и обратно вставлять. Много ресурсов жрет... А у меня клиент-серверное приложение, нельзя так "колхозно" обходится с задачей...

Кто нибудь сталкивался?
«Каждому программисту ЭВМ выдает то, что он заслуживает» (c)

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 02.07.2006 (Вс) 23:57

PUNK-GRUNGER писал(а):Мне нужно вырезать теги ТОЛЬКО В $1... т.е. в тексте между [text][:text]

Пытался я еще рекурсию прикрутить, т.е. вырезать кусочек [text][:text], обрабатывать и обратно вставлять. Много ресурсов жрет... А у меня клиент-серверное приложение, нельзя так "колхозно" обходится с задачей...

Кто нибудь сталкивался?


а если сплит попробовать
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

Angerslave
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 02.10.2006 (Пн) 9:29
Откуда: Омск

Сообщение Angerslave » 17.11.2006 (Пт) 21:16

Тема древняя, но мож кому поможет...
Код: Выделить всё
MsgBox(System.Text.RegularExpressions.Regex.Replace(my_str, "\[text\](<([^>]*)>(.*)</([^>]*)>)\[:text\]", "<textarea>$3</textarea>"))

Я на пхп так вырезал. Думаю здесь аналогично.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 109

    TopList