Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Регулярные выражения

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

VVL99

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

класс в квадратных кавычках [^"] это один символ, его можно размножить [^"]+ (1 и более) или  [^"]* (0 и более), но если он захвачен он будет. Чтобы не захватить нужно просмотр вперёд  (?!...)  (?=...)  или просмотр назад  (?<!...)  (?<=...)  
Можно обхитрить, воткнуть его в группу замены типа ([^"]x) заменить на \1 то есть он не потеряется вставившись с группой.  
 
Пояснение  
(?x)(?<!["\d])(\d++)(?!")  |   (?<!["\d])(?:(\d++)")  |  (?:"(\d++))(?!")  
Здесь 3 регулярки, флаг (?x) позволяет пробелы, чтобы отделять части элементов,  в обработке они не участвуют  
(?<!["\d])   (\d++)   (?!") здесь просмотр вперёд и назад, то есть ищем число (\d++) в скобках чтобы возвратить, ++ означает искать вперёд не проверяя, то есть число захватиться всё, иначе он может захватить часть числа и в средине вставить кавычку, если не позволяешь ему вставить её в конце. Просмотр назад (?<!["\d]) то есть перед числом не должно быть кавычка и число. Просмотр вперёд (?!") после числа не должна быть кавычка. Это первая регулярка ставит кавычки если число совсем без кавычек.  
А что если одна кавычка слева или одна справа? Добавил две регулярки для этих случаев (?<!["\d])(?:(\d++)"), то есть одинаковость что в обоих есть группа (\d++) и группы с просмотром назад (?<!["\d]) и вперёд (?!"), то есть запрещают с одной стороны иметь кавычку. Но на другой стороне кавычка допускается (?:(\d++)") здесь (?:...") означает группа без захвата (?:...), но с кавычкой, то есть регулярка ищет с кавычкой, но при замене вставляет без кавычки, а кавычки вставляются в строке замены обе. Мы таким способом удалили лишнюю кавычку.

Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 00:55 10-04-2019 | Исправлено: VVL99, 01:00 10-04-2019
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Регулярные выражения


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru