Notepad ++:查找表的所有列

时间:2018-02-27 09:52:53

标签: regex notepad++

我目前正在试图找出如何在记事本++中使用Regex在SQL语句中查找表的所有列。

让我们来看看这个问题:

select
  a.id,
  a.id || a.name,
  a.age,
  b.id
From a,b

现在,我想检索使用正则表达式的所有列 - 查询本身要大得多的问题,我不想完成整个查询。

期望的结果是:

id
name
age

我已经通过

找到了答案
(?<=a\.)(\S+)

我匹配所需的字符串,但Notepad ++仍然返回整行,而不仅仅是我需要的单词。

有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

使用“?”可能“匹配非贪婪”寻找单词边界可以帮助吗?表达式看起来像这样(在最后一个括号中添加?):

(?<=a\.)(\S+?\b) 

当我读到这个问题时,我才想到这个问题,并没有检查它的功能。

More information on non-greedy modifier can be found here.

答案 1 :(得分:1)

您可以使用此两步方法在a.之后提取值:

Find:         \ba\.(\w+)|(?s:.)
Replace With: (?1$1\n:)

然后,您需要remove duplicate lines才能获得预期的结果。

<强>详情

  • \ba\. - a.子字符串作为整个单词
  • (\w+) - 第1组:一个或多个单词字符(将保留组值+将在替换模式中附加一个LF)
  • | - 或
  • (?s:.) - 任何字符(将被删除)。

(?1$1\n:)替换表示将输出Group 1值,如果Group 1匹配,则结束LF符号的行将附加到结果,否则,将使用空字符串作为替换。