Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Замена скобок, содержащих определённые выражения 
:(
    Опции темы
GlebLee
Дата 12.8.2011, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 12.8.2011

Репутация: нет
Всего: нет



Здравствуйте!

Я только начал разбираться с JavaScript и регулярными выражениями и пока не могу сообразить, как решить такую задачу:
нужно удалить кавычки из набора символов "_} и {_" , если между "_} и {_" есть символы "гов" или "сказ", но нет символов "!", ".", "?" . Вначале я написал что-то вроде:
Код

inWork = inWork.replace(/"_\}*.[^.?!]*(?:гов|сказ)[^.?!]*.\{_"/ig, /_\}*.[^.?!]*(?:гов|сказ)[^.?!]*.\{_/ig);

Но не получилось. Тогда стал пытаться поймать в регулярное выражение только "_} , если между ним и  {_" есть символы "гов" или "сказ", но нет символов "!", ".", "?" заключив *.[^.?!]*(?:гов|сказ)[^.?!]*.\{_" в "вперёд смотрящее" (?=). Но такое выражение вообще не стало компилироваться. Подскажите, пожалуйста, как решается такая задача!
PM MAIL   Вверх
Evghenusi
Дата 12.8.2011, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

Репутация: 3
Всего: 15



а можешь показать имеющийся текст и тот текст который ты хочешь в результате получить?
PM WWW   Вверх
GlebLee
Дата 12.8.2011, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 12.8.2011

Репутация: нет
Всего: нет



Чтобы, например, 
Код
{_"Нарече"_}, говорит, {_"собрания вод моря"_}.

было преобразовано в
Код
{_"Нарече_}, говорит, {_собрания вод моря"_}.


PM MAIL   Вверх
Evghenusi
Дата 12.8.2011, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

Репутация: 3
Всего: 15



Код
inWork = inWork.replace(/"?(_}[^.!?]+{_)"?"/ig, "$1");
для начала, что бы ещё ГОВ и СКАЗ надо ещё подумать

Добавлено через 2 минуты и 39 секунд
хммммм, GlebLee, а твоя регулярка работает, 
Код
inWork = inWork.replace(/"(_\}*.[^.?!]*(?:гов|сказ)[^.?!]*.\{_)"/ig, "$1");
попробуй так

Добавлено через 6 минут и 55 секунд
Код
inWork = inWork.replace(/"?(_\}[^.!?]*?(?:гов|сказ)[^.!?]*?\{_)"?/ig, "$1");
так мне кажется будет лучше
PM WWW   Вверх
GlebLee
Дата 12.8.2011, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 12.8.2011

Репутация: нет
Всего: нет



Спасибо, оно работает! Но поясните, пожалуйста, что говорит второй аргумент метода .replace : "$1"?
PM MAIL   Вверх
Evghenusi
Дата 12.8.2011, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

Репутация: 3
Всего: 15



вставляет текст из первой подмаски (тут подробнее http://javascript.ru/String/replace)

Добавлено через 9 минут и 16 секунд
подмаска это то что заключено в круглые скобки (но после открывающей не должно быть ?:), в данном случае регулярка ищет текст который находится между "_} и {_", но кавычки находятся вне круглых скобок поэтому не попадают в подмаску 
{_"Нарече"_}, говорит, {_"собрания вод моря"_}.
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0425 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.