正则表达式查找方括号中的句点

3
我正在解析一些SQL语句,发现SELECT语句可能如下所示:SELECT [tblCustomer].[FirstName], [tblCustomer.LastName], [tblOrder].[Order_No]。正如你所看到的,第二列在方括号内有一个.。这在Access SQL中是可以接受的,但在SQL Server中不行。我试图构建一个正则表达式来识别是否有一个.在方括号内,并用].[替换它。
我尝试了:\[.+?\](?![\.]),它可以得到方括号内的句点,但当它找到闭合括号时,搜索并没有停止。
我使用ECMAScript以与VBA兼容,并且我不担心嵌套的括号。
例如:https://regex101.com/r/Inxhdg/1/

1
你能否将 ].[ 替换为 .,然后再将 . 替换为 ].[ - Scott Craner
replace(replace("SELECT [tblCustomer].[FirstName], [tblCustomer.LastName], [tblOrder].[Order_No]","].[","."),".","].[") - Scott Craner
@ScottCraner 我喜欢你的想法,但这也会找到合法的‘.’并将其替换为‘].[’。例如:replace(replace("SELECT [tblCustomer].[FirstName], [tblCustomer.LastName], tblOrder.Order_No","].[","."),".","].[") - Ben
假设所有的都是 [],则正确。 - Scott Craner
1个回答

1

你可以使用

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

参见 正则表达式演示细节:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接