Регулярное выражение для поиска точки в квадратных скобках

#sql #regex #vba

#sql #регулярное выражение #vba

Вопрос:

Я анализирую некоторые операторы SQL и нашел места, где оператор SELECT может быть:

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

и, как вы видите, во втором столбце есть a . внутри квадратных скобок. Это приемлемо в Access SQL, но не в SQL Server. Я пытаюсь создать регулярное выражение, чтобы определить, когда есть . внутри квадратных скобок, и заменить его на ].[

Я пробовал: [. ?](?![.]) что даст мне точку внутри квадратных скобок, но поиск не прекращается, когда он находит закрывающую скобку.

Я использую ECMAScript для совместимости с VBA, и у меня нет проблем с вложенными скобками.

Пример: https://regex101.com/r/Inxhdg/1 /

Комментарии:

1. не могли бы вы просто заменить ].[ на . , а затем заменить . на ].[ ?

2. replace(replace("SELECT [tblCustomer].[FirstName], [tblCustomer.LastName], [tblOrder].[Order_No]","].[","."),".","].[")

3. @ScottCraner Мне нравится, как вы думаете, но это также позволит найти законные . «ы» и заменить их на ].['. Example: replace(replace(«ВЫБЕРИТЕ [tblCustomer] . [Имя пользователя], [tblCustomer. LastName], tblOrder. Order_No»,»].[«,».»),».»,»].[«)`

4. исправьте, предполагалось, что все были [] .

Ответ №1:

Вы можете использовать

Поиск: ([w ).(?=w ])
Заменить на: $1].[

Смотрите демонстрацию регулярных выражений. Подробные сведения:

  • ([w ) — Группа 1 ( $1 ): [ а затем любая одна или несколько букв, цифр или символов подчеркивания
  • . — точка
  • (?=w ]) — позитивный прогноз, который требует одну или несколько букв, цифр или символов подчеркивания, а затем ] символ сразу справа от текущего местоположения.