powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите доработать regexp
12 сообщений из 12, страница 1 из 1
Помогите доработать regexp
    #40002216
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такой шаблон:
Код: plaintext
(?=\B)(:\w+|returning )
Он получает из SQL-запроса именованные параметры (в формате :параметр).
Но он также захватывает символьные классы.
Указанный шаблон захватывает обе строки:
Код: plaintext
1.
2.
:alnum:
:test
А мне нужно, чтобы первую строчку он не захватывал.
Пробовал такое:
Код: plaintext
(?=\B)(:\w+(?!:)|returning )
Но тогда из первой строки просто захватывается ":alnu".
...
Рейтинг: 0 / 0
Помогите доработать regexp
    #40002282
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
(?=\B)(:(?!\w+:)\w+|returning )
...
Рейтинг: 0 / 0
Помогите доработать regexp
    #40002348
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, попробую.
...
Рейтинг: 0 / 0
Помогите доработать regexp
    #40002422
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отлично работает, спасибо.

Есть еще одна просьба.
В идеале в шаблон мне бы хотелось добавить захват символа ?, когда он не в кавычках.
Или тут регулярные выражения не помогут?
...
Рейтинг: 0 / 0
Помогите доработать regexp
    #40002472
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

а что такое (?=\B) ? Это же якорь, зачем его в группу?
...
Рейтинг: 0 / 0
Помогите доработать regexp
    #40002502
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По идее это выражение гарантирует, что найденный фрагмент не будет серединой слова.
...
Рейтинг: 0 / 0
Помогите доработать regexp
    #40002511
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.
По идее это выражение гарантирует, что найденный фрагмент не будет серединой слова.
там и так не должно быть середины слова, потому что двоеточие
...
Рейтинг: 0 / 0
Помогите доработать regexp
    #40002513
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.
В идеале в шаблон мне бы хотелось добавить захват символа ?, когда он не в кавычках.
примеров бы несколько. Где этот ? вообще должен присутствовать.
...
Рейтинг: 0 / 0
Помогите доработать regexp
    #40002536
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имя пользователя1
там и так не должно быть середины слова, потому что двоеточие

Второй вариант returning, это больше для него.
...
Рейтинг: 0 / 0
Помогите доработать regexp
    #40002538
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имя пользователя1
примеров бы несколько. Где этот ? вообще должен присутствовать.

Примеры:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
--Должен учитываться:
select * from t where name = :name
select * from t where name=:name
select * from t where name = ?
select * from t where name=?
select * from t where ? is not null
update t set v=v+?*10

--Не должен учитываться:
--select * from t where name=?
select * from t where name='?'
select * from t where name = 'select ? from t'
select * from t where name = 'select :name from t'
select * from "t?"



Возможно ли с помощью регулярных выражений вообще пропускать выражения в кавычках?
Или это регулярными выражениями не решается, нужен парсер?
...
Рейтинг: 0 / 0
Помогите доработать regexp
    #40002568
Фотография Имя пользователя1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.
Возможно ли с помощью регулярных выражений вообще пропускать выражения в кавычках?
Или это регулярными выражениями не решается, нужен парсер?
лучше парсер с конечным автоматом. Потому как тут наверняка ещё и экранирование кавычек есть.

Регексами в принципе можно, наверно, но может быть неоптимально, или даже совсем неоптимально

а какова у тебя задача?
...
Рейтинг: 0 / 0
Помогите доработать regexp
    #40002585
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это обертка для работы с БД, которая может использоваться для запросов с параметрами.
В некоторых СУБД (например Oracle) все параметры должны быть объявлены перед вызовом, иначе будет ошибка.
Поэтому я извлекаю из запроса все параметры и задаю им переданное значение (или null, если значения не передавались).
Если я попробую объявить параметр, которого на самом деле в запросе нет (как приведенный в самом начале [[:alnum:]]), то тоже будет ошибка.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите доработать regexp
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]