Удаление скобок, с содержимым |
Здравствуйте, гость ( Вход | Регистрация )
Удаление скобок, с содержимым |
RazrFalcon |
8.12.2011, 12:12
Сообщение
#1
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Примеры:
Во всех случаях должен остаться только text. Все что в скобках и сами скобки нужно удалить. Какие есть варианты? Сейчас использую QRegExp, но думаю есть более простые способы.
|
|
|
RazrFalcon |
8.12.2011, 19:50
Сообщение
#2
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
ППЦ... Пашет! Как?!
Большое спасибо. И можно ли расшифровку увидеть. А то что-то не совсем понял работу его. |
|
|
Sokoloff |
8.12.2011, 20:39
Сообщение
#3
|
Участник Группа: Участник Сообщений: 237 Регистрация: 1.4.2009 Из: Москва Пользователь №: 654 Спасибо сказали: 50 раз(а) Репутация: 11 |
ППЦ... Пашет! Как?! Большое спасибо. И можно ли расшифровку увидеть. А то что-то не совсем понял работу его. Да регэкспы это жесть Для читаемости двойные слеши я уберу, это чисто сишная фишка. Здесь засада с жадностью выражений. По умолчанию квантификаторы жадные, и они будут хватать самую первую и последнюю скобки. Т.е. в "текст[123]text[567][890]" выражение "\[.*\]" хапнет все от первой до последней скобок - "тект[123]text[567][890]". Это можно изменить используя QRegExp::setMinimal, но не в нашем случае. Нам нужны и не жадные квадратные скобки, и жаднючие "\s*". Поэтому приходится извращаться. Я буду идти от краев к центру. \s*\[[^\[]*\]\s* \s* - 0 или более пробельных символов перед и после патерна. \[[^\[]*\] \[ и \] - Квадратные скобки именно как символы, в отличие от следующего пункта. Если перед символом стоит слеш, мы говорим, что это обычный символ а не спецсимвол. [^\[]* * - 0 или более повторений предыдущего шаблона. [^\[] [ и ] - Без слешей означают перечисление символов. Например [АБВ] - один символ или А, или Б, или В. ^\[ - Скобка "\[", но перед ней стоит отрицание "^". Т.е. любой символ кроме квадратной скобки. Что получилось в итоге: Ищем последовательность начинающуюся и заканчивающуюся скобками, но внутри последовательности открывающей скобки быть не должно. Перед и после нее могут быть пробелы. P.S. А как этот регэксп смотрится с BB-кодами, вообще сказка Сообщение отредактировал Sokoloff - 8.12.2011, 20:40 |
|
|
Текстовая версия | Сейчас: 23.11.2024, 2:46 |