使用正则表达式解析 select 语句(用于自定义 SQL 解析器)

2024-04-21

我这样做是为了教学目的(构建一个教学数据库;构建它的一部分,就像成熟的数据库一样;这是一个非常简单的查询解析器。)

我正在尝试使用正则表达式解析简单的“选择”语句。它适用于大多数简单的情况,但我在选择表格之间留有空格的平衡中失去了它(从a,b;),允许 from 和 terminator 之间有无限的空格;,并允许可选的限流器“where" 之间的空格不受限制从 a,b 到哪里 and ;

这是正则表达式:

select\s(.*)\sfrom(.*)\s(where (.*))?\s;

以下是示例查询:

select a.a,b.b,c from a,b where a.a = b.a;

select a.a,b.b,c from a,b;

select a.a,b.b,c from a,b ;

select a.a,b.b,c from a,b where a.a = b.a  ;

可用于正则表达式101 https://regex101.com/r/bBFgrO/3与单元测试。


这适用于提供的示例:select\s+(.*?)\s*from\s+(.*?)\s*(where\s(.*?)\s*)?;

看这里 :https://regex101.com/r/sBwpok/3 https://regex101.com/r/sBwpok/3

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用正则表达式解析 select 语句(用于自定义 SQL 解析器) 的相关文章

  • 对于返回超过1个值的SQL select,当Id为GUID时它们如何排序?

    我想知道 SQL Server 如何对查询返回的数据进行排序 并且各个表的 Id 列都是 uniqueidentifier 类型 我在创建所有 GUID 时使用 NHibernate GuidComb 并执行以下操作 Sheet sheet
  • 在 Java 正则表达式中获取多个模式的重叠匹配

    我有同样的问题这个链接 https stackoverflow com questions 18751486 matching one string multiple times using regex in java 但有多种模式 我的正
  • Python re无限执行

    我正在尝试执行这段代码 import re pattern r w w s re compiled re compile pattern results re compiled search COPRO HORIZON 2000 HOR p
  • 用于(联合国)结构化文本文档的词法分析器/解析器[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有很多脚本解析器和词法分析器 即结构化计算机语言 但我正在寻找一个可以将 几乎 非结构化文本文档分成更
  • 有一种简单的方法可以忽略时间戳来区分日志文件吗?

    我需要比较两个日志文件 但忽略每行的时间戳部分 确切地说是前 12 个字符 有没有一个好的工具 或者一个聪明的 awk 命令 可以帮助我 根据您使用的 shell 您可以改变方法 Blair https stackoverflow com
  • REGEXP_REPLACE - 仅当包含在 () 中时才从字符串中删除逗号

    我在 oracle 论坛网站找到了一个例子 输入字符串 a b c x y z a xx yy zz x WITH t AS SELECT a b c x y z a xx yy zz x col1 FROM dual SELECT t c
  • 如何使用第二行中的值填充第一行中的空值?

    我正在尝试编写一个查询 仅显示每个名称的第一行 但这些行的标题为空 因此我想从紧邻的下一行中提取它们的标题 table1 Name Title Row Dan NULL 1 Dan Engineer 2 Dan Developer 3 Ja
  • 创建日期范围表

    我正在编写一份需要显示每天值的报告 我有查询的开始日期和结束日期 但我希望避免丢失日期 以防表不包含特定日期的值 我正在考虑创建一个基本日期范围表 其中包含开始和结束之间的所有日期 然后将其与数据表左连接以显示每一天的值 我找到了一些适用于
  • ORA-00933 与内部联接和“as”混淆

    我有一个使用以下命令从两个表中获取数据的查询inner join 但我收到错误SQL command not properly ended as 下面有一个星号 select P carrier id O order id O aircra
  • Magento - 将特定父类别的子类别列为链接

    我是 php 的初学者 并且一直试图将一个父类别的子类别作为链接调用 我得到了这个 它调出了 getName 但 getUrl 根本没有返回任何 URL 输出代码只是 li a href name of sub a li
  • 如何对多行的一列值求和?

    我有这个表 我想添加几行的 change 列的值 或者更准确地说 从 ne 值为零的行到 ne 值为零的下一行 不是第二个本身 任何答案将不胜感激 rn date ne change 0 2008 12 07 0 10330848398 1
  • 如何使用 SQL 通过表示多级订单的 varchar 字段正确排序?

    我不太喜欢数据库 我发现在查询上出现以下问题SQL服务器数据库旧的遗留应用程序的 我声明不幸的是我无法更改数据库结构 字段类型 这非常难看 我有以下情况 SELECT Sottocategoria IdSottocategoria IdCa
  • 在 Javascript 中获取第一个数字出现后的子字符串

    我正在尝试提取第一个数字之后 并包括 的字符 ABC 123SD gt 123SD 123 gt 123 123SD gt 123SD ABC gt 我当前的解决方案如下 var string1 ABC 123SD var firstDig
  • TSQL - 生成文字浮点值

    我理解比较浮点数时遇到的许多问题 并对它们在这种情况下的使用感到遗憾 但我不是表格作者 只有一个小障碍需要克服 有人决定使用浮点数 就像您期望使用 GUID 一样 我需要检索具有特定浮点值的所有记录 sp help MyTable Colu
  • 字符串中的注释和注释中的字符串

    我正在尝试使用 Python 和 Regex 计算 C 代码中包含的注释中的字符数 但没有成功 我可以先删除字符串以删除字符串中的注释 但这也会删除注释中的字符串 结果会很糟糕 是否有机会通过使用正则表达式来询问不匹配注释中的字符串 反之亦
  • 如何从字符串中删除所有数字?

    我想删除字符串 0 9 中的所有数字 我写了这段有效的代码 words preg replace 0 words remove numbers words preg replace 1 words remove numbers words
  • C# using 语句、SQL 和 SqlConnection

    使用 using 语句 C SQL 可以吗 private static void CreateCommand string queryString string connectionString using SqlConnection c
  • 没有为 1 个或多个必需参数给出值。更新SQL

    我正在编写一个程序 当用户在列表视图上选择记录时 该程序会更新密码或积分 我收到错误 没有为 1 个或多个必需参数给出值 我不知道如何纠正 我是否遗漏了一些明显的东西 Dim sql As String UPDATE Users SET P
  • 根据由另一列分组的不同列的最大值获取值[重复]

    这个问题在这里已经有答案了 我想根据由另一列分组的不同列的最大值来获取列的值 我有这张表 KEY NUM VAL A 1 AB B 1 CD B 2 EF C 2 GH C 3 HI D 1 JK D 3 LM 并想要这样的结果 KEY V
  • Pure Bash 替换捕获组

    我有这个示例字符串 test string 13A6 该字符 数字可以是从 0 到 9 以及从 A 到 F 我想要这个输出 1 3 A 6 我有这个工作 result echo test string sed s g 我想在没有 sed 的

随机推荐

  • Google Assistant 更改表面不起作用

    嗨 大家好 我目前正在尝试使用 Dialogflow 为 Google Assistant 构建一个应用程序 在特定意图期间 我想将用户重定向到他的手机 使用扬声器时 因为该意图需要精确的键盘输入 正如文档中所说 我正在打电话askForN
  • 1&1 Windows 托管服务器 web.config URL 重写问题

    我面临与 1 1 托管的 Windows 服务器中的 URL 重写相关的问题 我正在尝试使用 web config 文件重写 url 但它根本不起作用 给我错误或 500 19 错误总结 HTTP 错误 500 19 内部服务器错误 无法访
  • C# Excel 文本到列问题

    您好 我在 C 中调用了文本到列函数 但结果并不像我想要的那样 我的工作表的第一个单元格中有这些数据 Guest 0 12 10 2010 03 46 34 PM 66082 如果我从 Excel 手动运行 文本到列 我就明白了 Guest
  • 如何查看两个 Hg 存储库之间不同的所有文件的列表?

    我有一个包含大量工作代码的存储库 我团队中的另一位开发人员有一段时间没有任何更新 然后提交了大约 5 个变更集 所以 现在我们有两个相隔近两周的头 该提示不起作用 但我的变更集可以 我想看看两个存储库之间有什么区别 而不必合并它们 因为我不
  • OCLinEcore 和 Regex 创建有效的 IPv4 字符串

    我有一个 Ecore 模型 我试图在其中添加一些 OCL 约束 当我尝试创建有效 IPv4 形式的属性 字符串 时 我的问题就出现了 我想我应该使用正则表达式 但我根本不知道如何在 OCLinEcore 上使用正则表达式 从 Eclipse
  • 按类别划分的直方图颜色

    我有一个 pandas 数据框 其中包含 2 列 height 和 class class 是一个包含 3 个值 1 2 和 5 的列 现在我想按类别制作高度数据和颜色的直方图 plot19 s vegetation height plot
  • ReSharper 混淆了我的视觉工作室 - 将视觉工作室重置为默认值

    我使用 ReSharper 来执行一些任务 然后卸载了它 因为它让我感到困惑 所有亮点和快速链接 我更喜欢 Visual Studio 的默认行为 卸载后 以前用红线下划线的编译错误现在根本没有下划线了 如何使用默认行为重置 Visual
  • 当计数为 1 时,有条件地将 T 从 Rc 移出

    有没有办法将物体从Rc
  • 为什么使用无效概念被视为格式错误

    新公布的草案中提到 expr prim req 6 https eel is c draft expr prim req 6 sentence 6 如果将模板参数替换为要求会 总是导致替换失败 程序格式错误 不 需要诊断 Example t
  • ASP.NET Core 授权重定向到错误的 URL

    我正在尝试运行一个映射了以下路由的 Web 应用程序 app UseMvc routes gt routes MapRoute default WoL controller Account action Login id 如果用户未经过身份
  • 带菜单的NSTableView,如何通过右键单击更改边框颜色?

    NSTableView 带有附加的 NSMenu 右键单击表视图后 将出现菜单 有了它 表视图将突出显示带有彩色边框的行 使用悬停表演示 https developer apple com library mac samplecode Ho
  • 使用 javascript 对外部 url 发出 Ajax 请求

    我正在尝试对外部 url 执行 ajax 请求 现在我在 php 中执行此操作 as data array TokenID gt tokenid APIKey gt api key EcryptedData gt encrypted dat
  • 什么是未处理的承诺拒绝?

    为了学习 Angular 2 我正在尝试他们的教程 我收到这样的错误 node 4796 UnhandledPromiseRejectionWarning Unhandled promise rejection r ejection id
  • 如何使用 keywindow 无边框窗口(覆盖)覆盖全屏游戏?

    我创建的应用程序有时会显示带有标签和文本框的叠加层 它工作得很好 但我需要它即使在其他应用程序处于全屏模式且处于活动状态时也能工作 对于覆盖 我创建了自定义窗口类并覆盖canBecomeKeyWindow让无边框窗口成为关键窗口的方法 简单
  • 从项目中删除 Pod - xcode

    我正在尝试从我的项目中删除 pod 在我删除所有文件和所有内容后 我收到此消息 diff Podfile lock No such file or directory diff Manifest lock No such file or d
  • 为什么我在使用 img 标签时收到 403 禁止?

    当尝试使用时 img src Ginger jpeg 我收到 403 错误 这是请求的页面 http laponderosakennels com beagles memories ginger index html http lapond
  • 当舞台处于全屏模式时 JavaFX 弹出窗口隐藏

    I am trying to popup a dialog over my fullscreen primary stage in javafx When I create my popup it is unexpectedly hidde
  • Beautiful Soup 找不到我想要的 HTML 部分

    我使用 BeautifulSoup 进行网页抓取已经有一段时间了 这是我第一次遇到这样的问题 我试图在代码中选择数字 101 172 但即使我使用 find 或 select 输出始终只有标签 而不是数字 我之前曾处理过类似的数据收集工作
  • 可调用和泛型的集合

    我需要在并发线程中启动一堆任务并检索其结果 这是我的代码 List
  • 使用正则表达式解析 select 语句(用于自定义 SQL 解析器)

    我这样做是为了教学目的 构建一个教学数据库 构建它的一部分 就像成熟的数据库一样 这是一个非常简单的查询解析器 我正在尝试使用正则表达式解析简单的 选择 语句 它适用于大多数简单的情况 但我在选择表格之间留有空格的平衡中失去了它 从a b