正则表达式:我想从下面的create。* \ [。* \]中选择第二个。*

时间:2018-01-20 11:47:07

标签: regex notepad++

我在notepad ++中有一个大文本文件我想修改一个替换一堆create table sql脚本,方法是将_tmp附加到每个表名

我想转CREATE TABLE [schema].[table] into [schema].[table_tmp]

到目前为止我找到的表达式:create .*\[.*\]

这找到整行,我只想找到表名。

然后我将什么放入替换盒子?

2 个答案:

答案 0 :(得分:0)

  • 控制 + ħ
  • 找到:create table (\[.*?\]\.\[\w+)\]
  • 替换为:$1_tmp]
  • UNcheck Match case
  • 检查环绕
  • 检查正则表达式
  • 全部替换

<强>解释

create table    : literally
(               : start group 1
  \[            : open bracket
  .*?           : 0 or more any character, not greedy
  \]            : close bracket
  \.            : a dot
)               : end group 1
\[              : open bracket
.*?             : 0 or more any character, not greedy

<强>替换

$1              : content of group 1 (ie. the first pair of bracket)
_tmp]          : the new table name

给定示例的结果:

[schema].[table_tmp] 

答案 1 :(得分:0)

试试这个:

搜索:(CREATE TABLE \[\w+\]\.\[\w+)
替换为:$1_tmp

我们查找文本“CREATE TABLE [”,后跟一个或多个单词字符(即模式名称),后跟“]。[”,后跟另一个单词(表名)。我们使用( )来捕获所有这些内容。

替换插入我们捕获的文本($1)并添加_tmp