使用正则表达式捕获另一个匹配中特定字符的所有实例

时间:2018-09-05 16:48:13

标签: regex notepad++

我有一些文本如下:

"tbl_One"."Column Name A" AS "Column Name A",
"tbl_Two"."Column Name B" AS "Column Name B",
"tbl_Three"."Column Name C" AS "Column Name C",

除了在 AS 之后紧跟的空格,我想选择在 AS 之后的每一行的所有空格。

我一直在以下网站上进行实验:https://regex101.com/

到目前为止,我已经提出了这一点,它捕获了我实际上想搜索空格字符的每一行的一部分:

/(?<=AS ).*(?=$)/gm

例如,在第一行,它捕获:

"Column Name A",

我现在要告诉它“好吧,丢弃所有您捕获的字符(空格除外)。”

我该如何实现?这将在Notepad ++中用于删除所有捕获的空间。

1 个答案:

答案 0 :(得分:0)

您可以使用

查找内容(?:\G(?!^)|\bAS\s+")[^\s"]*\K\h+
替换为<empty string>

请参见regex demo

详细信息

  • (?:\G(?!^)|\bAS\s+")-上一次成功匹配(\G(?!^)的末尾或(|)中的单词AS作为一个整体单词(\b是一个单词边界),后跟1+个空格(如果此处没有换行符,可以用\h+代替)
  • [^\s"]*-除空格和"之外的任何0+个字符
  • \K-匹配重置运算符,用于将到目前为止已匹配的文本清零
  • \h+-1个以上水平空格字符。

Notepad ++设置屏幕截图:

enter image description here