【问题标题】:Regex to find period in square brackets正则表达式在方括号中查找句点
【发布时间】:2020-09-28 17:57:19
【问题描述】:

我正在解析一些 SQL 语句,并找到了可能存在 SELECT 语句的地方:

SELECT [tblCustomer].[FirstName], [tblCustomer.LastName], [tblOrder].[Order_No]

如您所见,第二列的方括号内有一个.。这在 Access SQL 中是可以接受的,但在 SQL Server 中是不可接受的。我正在尝试构建一个正则表达式来识别方括号内何时有 . 并将其替换为 ].[

我尝试过:\[.+?\](?![\.]),它会在方括号内给我一个句点,但它在找到右括号时不会停止搜索。

我使用 ECMAScript 与 VBA 兼容,我不担心嵌套括号。

示例:https://regex101.com/r/Inxhdg/1/

【问题讨论】:

  • 你能不能把].[换成.然后把.换成].[
  • replace(replace("SELECT [tblCustomer].[FirstName], [tblCustomer.LastName], [tblOrder].[Order_No]","].[","."),".","].[")
  • @ScottCraner 我喜欢你的想法,但这也会找到合法的.,并将它们替换为].['. Example: replace(replace("SELECT [tblCustomer].[FirstName], [tblCustomer.LastName], tblOrder.Order_No","].[","."),".","].[")`
  • 更正它假设所有人都是[]

标签: sql regex vba


【解决方案1】:

你可以使用

搜索(\[\w+)\.(?=\w+])
替换为$1].[

the regex demo详情

  • (\[\w+) - 第 1 组 ($1):[,然后是任意一个或多个字母、数字或下划线
  • \. - 一个点
  • (?=\w+]) - 正向前瞻,需要一个或多个字母、数字或下划线,然后在当前位置右侧紧接一个 ] 字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 2022-01-20
    • 2017-06-23
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多