Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
Есть такой текст (SQL-запрос): Код: plaintext 1. 2. Нужно найти все placeholder (имена переменных, начинающиеся с символа двоеточия). Но при этом в результаты не должны попадать выражения в кавычках. Видимо мне нужны backreferences, но я не умею ими пользоваться. ________________________ Мы смотрим с оптимизмом... ...в оптический прицел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 10:11 |
|
||
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
Alibek B., [,\s]:\w+ только, как всегда, у меня ощущение, что решается не та задача, да еще не с той стороны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 10:43 |
|
||
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
Может быть. Мне нужно последовательно выполнить несколько SQL-запросов. Большинство SQL-запросов являются параметрическими, некоторые из них возвращают значения в параметры, которые используются в последующих запросах. Поэтому все параметры я храню в общем хеше, из которого использую (bind_param_inout) те параметры, которые применяются в конкретном запросе. А чтобы список этих параметров не составлять вручную, я их извлекаю прямо из текста запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 12:04 |
|
||
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
r u[,\s]:\w+ У меня текст может быть и таким: 'argument is :amount'. В данном случае это текст, а не параметр :amount, подстановка производиться не должна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 12:06 |
|
||
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
Alibek B., ,\s*(:\w+) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2015, 19:24 |
|
||
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
Alibek B., Полноценный лексический анализ и вперед... YACC тебе в помощь. Регулярками вот это Alibek B.У меня текст может быть и таким: 'argument is :amount'. В данном случае это текст, а не параметр :amount, подстановка производиться не должна.не достается. Или достается но полным анализом. Регулярка будет километровая. Вы, как всегда, решаете не ту задачу. Вернее нас заставляете... Почему вы хотите этого странного?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2015, 16:47 |
|
||
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
Задача простая - из текста SQL-запроса извлечь именованные параметры, чтобы впоследствии привязать к ним переменные. Я регулярные выражения знаю не очень хорошо и первоначально подумал, что обратные ссылки помогут мне в какой-то степени эмулировать состояния автомата. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2015, 21:43 |
|
||
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
Alibek B.Задача простая - из текста SQL-запроса извлечь именованные параметры, чтобы впоследствии привязать к ним переменные. задача странная. если есть готовый запрос с параметрами, значит его уже ктото создал и на тот момент параметры были известны. почему ВДРУГ нужно достать эти параметры много позже? задача изначально какая? явно же не та что описана? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2015, 17:59 |
|
||
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
Не пойму, что тут может быть странного. Есть класс-обертка для работы с БД. Реализует ряд методов, в том числе выполнение SQL-запроса с параметрами и возвратом результата. Этот класс-обертка не знает заранее, какой SQL-запрос ему будет передан и с какими параметрами. Есть скрипт, который использует класс-обертку для работы с БД. Этот скрипт конечно знает, какие SQL-запросы и с какими параметрами он выполняет. Но как раз в том и смысл, чтобы не перечислять список параметров, а использовать параметры из текста SQL-запроса. Выглядит использование как-то так: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. В метод query я передаю только сам SQL-запрос и общий хеш с переменными, из которых будут использоваться только те, что указаны в SQL-запросе. Если третьим параметром в него передавать список параметров, то во-первых это будет ручная работа там, где она автоматизируется, а во-вторых возможны ошибки и опечатки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2015, 22:59 |
|
||
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
Alibek B.Но как раз в том и смысл, чтобы не перечислять список параметров, а использовать параметры из текста SQL-запроса. они все равно же лежат в хеше, и там перечислены. мартышкин труд. Alibek B.В метод query я передаю только сам SQL-запрос и общий хеш с переменными, из которых будут использоваться только те, что указаны в SQL-запросе. бред. очередная универсальная обертка, которая сломается на чуть более нестандартном запросе. это мы проходили.)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2015, 07:22 |
|
||
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
r uони все равно же лежат в хеше, и там перечислены. мартышкин труд. В хеше перечислены вообще все параметры. А в конкретном запросе используются только некоторые из них. r uочередная универсальная обертка, которая сломается на чуть более нестандартном запросе. это мы проходили.)) Чему там ломаться? Это же не обертка, которая делает все. Это автоматизация некоторых типовых сценариев. Сейчас у меня это выглядит так: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Ну а проблему с тем, чтобы не находить placeholder в кавычках пока никак не решил, переписал запрос так, чтобы они в кавычках не оказывались. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2015, 11:34 |
|
||
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
Alibek B.В хеше перечислены вообще все параметры. а должны быть не все, а только нужные. сами себе проблему создаем - сами её потом героически "через гланды" решаем) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2015, 18:59 |
|
||
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
Кризиз среднего возраста, что-ли? Я прекрасно знаю, что для bind_param нужно перечислять только нужные параметры. И про это я писал в своем втором сообщении (третьем в топике). Но мне нужно выполнить не один запрос, а серию запросов, при этом одни запросы возвращают out-параметры, которые используются как in-параметры в других запросах. В этом случае удобнее использовать общий хеш с параметрами, в котором после выполнения всей серии запросов будут собраны результаты выполнения всех запросов. По большому счету я это сделал и это действительно удобнее, чем запускать SQL-запрос, передавая в него конкретный список параметров. Сложность только в том, чтобы при поиске placeholder с помощью регулярных выражений исключить результаты, найденные в кавычках. Решить это я пока не смог, написал SQL-запросы таким образом, чтобы подобных случаев не возникало. Если подобное с помощью регулярных выражений не решить, значит так и оставлю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2015, 20:40 |
|
||
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
Alibek B.В этом случае удобнее использовать общий хеш с параметрами, а что мешает сделать несколько хешей, для разных запросов? или даже в общем хеше но с префиксами например... да много можно придумать адекватных решений, но нет, лучше конечно свалить все в кучу, а потом сидеть и ковыряться в ней, вылавливая то что нужно) No comments.. как говорится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2015, 05:32 |
|
||
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
Мне здесь давали много ценных советов, поэтому попробую еще раз. Вот практическая реализация моей задачи разными способами. r uа что мешает сделать несколько хешей, для разных запросов? Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. r uили даже в общем хеше но с префиксами например... По сути ничем от предыдущего варианта отличаться не будет. Читабельность будет даже хуже. Alibek B.В этом случае удобнее использовать общий хеш с параметрами Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Неужели не видно разницы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2015, 09:15 |
|
||
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
Alibek B., так храни параметры вообще в глобальных переменных. тогда и хеш передавать в функцию не нужно будет) код станет еще краше и компактнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2015, 13:44 |
|
||
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
Зачем доводить до абсурда? В моем случае SQL-запросы связаны между собой в одну логическую серию. Эта серия запросов объединена общими параметрами, поэтому логично эти параметры хранить в одном общем хеше. Если бы прозвучал совет не колхозить, а преобразовать эту серию запросов в одну хранимую процедуру — я бы с разумностью этого совета согласился, но его бы не принял, поскольку у меня есть причины не вносить изменений в структуру БД. Но сентенция « а должны быть не все, а только нужные », после того как я описал, почему я пришел к общему хешу параметров — это не совет, а бессмысленное морализаторство. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2015, 16:16 |
|
||
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
Alibek B.Есть такой текст (SQL-запрос): Код: plaintext 1. 2. Нужно найти все placeholder (имена переменных, начинающиеся с символа двоеточия). Но при этом в результаты не должны попадать выражения в кавычках. Видимо мне нужны backreferences, но я не умею ими пользоваться. решается рекурсией, но что-то у меня не пошло, поэтому так: Код: perl 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2015, 16:58 |
|
||
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
или даже вот так, более продвинуто Код: php 1. 2. 3. 4. 5. 6. 7. 8. Вывод: :sysuser :domain :cgroup :customer :customer :customer ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2015, 06:25 |
|
||
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
прошу просвещённую публику обратить своё внимание, что в вышеприведённом регулярном выражении нет захватывающих круглых скобок, а захват есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2015, 06:31 |
|
||
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
Спасибо, классно. Но я это регулярное выражение едва понимаю. А когда через полгода нужно будет что-то дорабатывать, это для меня вообще черная магия будет. Лучше предыдущий вариант попробую, он более доступен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2015, 20:27 |
|
||
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
Alibek B.Но я это регулярное выражение едва понимаю. А когда через полгода нужно будет что-то дорабатывать, это для меня вообще черная магия будет. если обратиться к документации, то чернота магии постепенно рассеется, а при дальнейшем углублении так просто станет прозрачный, как деревенский самогон бабки Лукерьи ( посёлок "Заветные Ильичи" Тульской обл, 3-я изба от околицы ) (*SKIP) - управляющая конструкция бэктрэкинга, заключается в том, что внутренний указатель НА СТРОКУ механизма передвинется на следующую сразу после обработанной и найденной подстроку. то есть, для строки " ааааа бббб 'ццццц' 22222КККК " и выражении / \d+(*SKIP) / внутренний указатель на подстроку замрёт на позиции <К>. далее идёт (*FAIL) он же (*F); это означает, что мы сами утверждаем, что шаблон не совпал и передёргиваем затвор у механизма бэктрэкинга, заставляя его продолжаться с этого места. что получилось: строка ":sysuser, 'smsmgr.pl:sms_smart.pl', :domain" левая ( относительно | ) часть шаблона: / [`] [^']+ ['] / как только встретится кавычка, сработает (*SKIP) и согласно шаблона указатель подстроки переедет на символ ,запятая. механизм передёрнется и продолжит уже оттуда; кавычки уже нет и следующим по ходу совпадением будет :domain, с которым совпадет правая часть шаблона: / :\w+ /. теперь то, что касается захвата; поскольку других совпадений всё равно нет, то нет и нужды обрамлять круглыми скобками интересующие нас совпадения, нам вернётся только то, что нас интересует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2015, 23:07 |
|
||
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
вообще прав коментатор выше... задача решаеться не та и не стого бока. обычно, для строки с параметрами, никто не изобретает велосипед... драйвер базы в подготовленом запросе, сам все это сделает, И! даже не надо париться к кавычкой... ведь она может быть двойная!!! а есчё она может быть экранированная!!! а есчё после всего шаманства что автор проделал, может оказаться что запрос лексически не верен, вто время как создание подготовленного запроса само бы уже выдало ошибку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2015, 18:54 |
|
||
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
вопрос был регулярным выражением исключить шаблоны в кавычках после заявлений типа WarstoneРегулярка будет километровая. возник спортивный интерес. всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2015, 19:22 |
|
||
|
Perl, помогите с регулярным выражением (исключить шаблоны в кавычках)
|
|||
|---|---|---|---|
|
#18+
volodin661вопрос был регулярным выражением исключить шаблоны в кавычках после заявлений типа WarstoneРегулярка будет километровая. возник спортивный интерес. всё. ок. спортсмен, а теперь размостри вопрос с экранированой кавычкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2015, 16:57 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38949528&tid=1461724]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 257ms |
| total: | 409ms |

| 0 / 0 |
