|
регулярные выражения для разбора sql запроса
|
|||
---|---|---|---|
#18+
Привет всем, кто это читает Пытаюсь разобраться в написании регулярного выражения для разбора sql запроса следующего вида: Select field1, field2 … from table1 where field1 < 5 Есть список требований: - Количество полей может быть перечислено сколько угодно. - После последнего поля нету символа «,» - Таблица может быть только одна - Возможны только знаки сравнения <>,<,>,<=,>=,= - Сравнение выполняется только с целыми числами - Между словами и знаками может быть сколько угодно пробелов, в соответствии с синтаксисом sql. Что-то ничего не выходит, кто-нибудь знает как это делается? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2021, 16:08 |
|
регулярные выражения для разбора sql запроса
|
|||
---|---|---|---|
#18+
Тут есть один мембер, который эксперт в регулярках, давно, правда, его что-то не видно. Он даже писал на регулярках транспиллеры из перла с сиплюсплюс и т.п. Если серьёзно, то область всей теории регулярных языков и, соответственно, регулярных выражений это только лексический разбор текста. Весь запрос ты этим не разберешь, потому что это уже синтаксический разбор, который выходит за рамки регулярщины. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2021, 16:36 |
|
регулярные выражения для разбора sql запроса
|
|||
---|---|---|---|
#18+
если речь про MSSQL, то есть такая сборка Microsoft.SqlServer.Management.SqlParser.dll, она входит в SSMS и в VS, возможно распространяется с каким то бесплатным пакетом для Windows, ищите и обрящете. Я взял тот, что из папки с SSMS В результате вызова получим довольно сложный объект, я не разбирался, что да как в нем, оставляю это вам. Но там есть свойство result.Script.Xml, которую можно к примеру открыть в XmlDocument, но думаю лучше разобраться в кишках самого объекта, там всё есть Как это лицензировать я не знаю, можно ли делать такое, вопрос... Но как мне кажется, если у вас есть на компе такая сборка, значит можно :) почему нет. И скорее всего её можно возить с собой, нужно только разобраться с зависимостями у меня файлы были вот тут: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Код: xml 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. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2021, 17:50 |
|
регулярные выражения для разбора sql запроса
|
|||
---|---|---|---|
#18+
. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2021, 17:53 |
|
регулярные выражения для разбора sql запроса
|
|||
---|---|---|---|
#18+
Kometulus Что-то ничего не выходит, кто-нибудь знает как это делается? Если не секрет, цель данного упражнения? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2021, 22:17 |
|
регулярные выражения для разбора sql запроса
|
|||
---|---|---|---|
#18+
hVostt Если не секрет, цель данного упражнения? Вестимо, запись "зачет" в зачетке. Если особо поразить преподавателя, то он, может быть, напишет: "Автор - адский сатана", но я такого еще не видел. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2021, 22:59 |
|
регулярные выражения для разбора sql запроса
|
|||
---|---|---|---|
#18+
fkfka hVostt Если не секрет, цель данного упражнения? Вестимо, запись "зачет" в зачетке. Если особо поразить преподавателя, то он, может быть, напишет: "Автор - адский сатана", но я такого еще не видел. Ну судя по требованию сделать это на регулярках и ограничениях, это точно не практическая задача. Особо понравилось: Kometulus Пытаюсь разобраться в написании... и Kometulus Что-то ничего не выходит :) Т.е. по сути все "попытки" ограничились рассылкой на разные площадки и форумы. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2021, 00:10 |
|
регулярные выражения для разбора sql запроса
|
|||
---|---|---|---|
#18+
Kometulus, Контекстно-зависимые грамматики алгоритмами, основанными на конечных автоматах, не разбираются. Просто примите это как аксиому. Даже попытка написать на регулярках парсер html или xml обречена на провал. Здесь можно использовать какие-нить паттерны типа визитор, ANTLR, ещё что-то, но не регулярки. Есть вот такой легендарный пост на SoF - к парсингу SQL регулярками он относится в ещё большей степени. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2021, 06:36 |
|
регулярные выражения для разбора sql запроса
|
|||
---|---|---|---|
#18+
Сон Веры Павловны Контекстно-зависимые грамматики алгоритмами, основанными на конечных автоматах, не разбираются. Контестно-свободные тоже ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2021, 13:08 |
|
регулярные выражения для разбора sql запроса
|
|||
---|---|---|---|
#18+
Roman Mejtes, Настоящим разбором SQL-выражения занимается сервер БД. Если что-то входит просто в SSMS, то это, скорее всего, что-то для подсветки синтаксиса, м.б. интеллисенса, и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2021, 13:14 |
|
регулярные выражения для разбора sql запроса
|
|||
---|---|---|---|
#18+
fkfka, какая разница? конкретную задачу автора данная либа решает. можно посмотреть все столбцы, таблицы, учесть union'ы, не знаю как там с view'ами и т.д. Надо просто пробовать, сам не юзал, но судя по XML вся инфа есть. Есть даже знакоместа. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2021, 14:08 |
|
регулярные выражения для разбора sql запроса
|
|||
---|---|---|---|
#18+
Roman Mejtes какая разница? конкретную задачу автора данная либа решает. Так-то да, я согласен. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2021, 14:14 |
|
регулярные выражения для разбора sql запроса
|
|||
---|---|---|---|
#18+
hVostt fkfka пропущено... Вестимо, запись "зачет" в зачетке. Если особо поразить преподавателя, то он, может быть, напишет: "Автор - адский сатана", но я такого еще не видел. Ну судя по требованию сделать это на регулярках и ограничениях, это точно не практическая задача. Особо понравилось: Kometulus Пытаюсь разобраться в написании... и Kometulus Что-то ничего не выходит :) Т.е. по сути все "попытки" ограничились рассылкой на разные площадки и форумы. "регулярные выражения" - это вершина для преподавателя и студента того заведения. Последнее пристанище. А вот то, о чем написал юзер, что некоторые грамматики не разбираются при помощи рв - это уже за гранью добра и зла для них. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2021, 12:30 |
|
|
start [/forum/topic.php?fid=20&msg=40074181&tid=1398278]: |
0ms |
get settings: |
16ms |
get forum list: |
7ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
46ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
357ms |
get tp. blocked users: |
0ms |
others: | 323ms |
total: | 755ms |
0 / 0 |