You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则表达式未匹配目标SQL字段文本最后两行的问题咨询

解决SQL字段正则匹配失败的问题

让我来帮你排查正则没匹配到最后两行的问题!先把你要匹配的目标SQL字段片段贴出来方便参考:

[id] [int] IDENTITY(1,1) NOT NULL, [name] [nvarchar](255) NOT NULL, [type] [nvarchar](255) NOT NULL, [number_of_persons] [int] NOT NULL, [number_of_suitcases] [int] NOT NULL, [created_at] [datetime2](3) NOT NULL, [updated_at] [datetime2](3) NOT NULL, [description] [text] NULL, [number_of_children] [int] NULL, [number_of_small_suitcases] [int] NULL, [code] [nvarchar](255) NULL, [sort_order] [int] NULL, [default_number_persons] [int] NULL, [margin_fixe...

可能的匹配失败原因

  • 截断的字段格式不符合正则预期:最后一行是[margin_fixe...,属于不完整的字段定义——没有完整的类型声明、NULL/NOT NULL标记,也没有结尾逗号。如果你的正则是按照完整字段结构(比如[字段名] [类型] (参数) 约束,)来写的,那这种截断行自然匹配不上。
  • 正则对结尾逗号或约束的要求太严格:很多时候写正则会默认每个字段都以逗号结尾,且必须有NOT NULL/NULL约束,但最后两行(尤其是截断的那行)不满足这个条件。

调整后的正则解决方案

你可以把正则改成更宽松的版本,兼容不完整的字段定义:

^\[([^\]]*)\] \[?([^\]]*)\]?(?:\((\d*)\))? (NOT NULL|NULL)?,?$

这个正则的调整点:

  1. 字段名部分([^\]]*):允许匹配不完整的字段名(比如margin_fixe)
  2. 类型部分\[?([^\]]*)\]?:允许类型部分缺失或不完整(比如截断后没有[xxx])
  3. 长度参数(?:\((\d*)\))?:允许没有长度参数(比如[int]不需要括号),也允许参数不完整
  4. 约束部分(NOT NULL|NULL)?:允许没有约束声明
  5. 结尾逗号,?$:允许字段末尾没有逗号

测试建议

你可以先单独提取最后两行(包括截断的那行)来测试这个正则,逐步调整规则——比如如果只需要匹配到字段名和部分类型,还可以进一步简化正则,确保覆盖到你的实际匹配场景。

内容的提问来源于stack exchange,提问作者Tschallacka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:44:05