将短语用引号括起来 Notepad++

wrap phrases in quotes Notepad++

我看了很多,但找不到确切的解决方案。我需要在 Notepad++ 中用引号括起短语。我的来源看起来类似于下面

Header Alpha, Header Month, Header Year, Header Beta,
        Header Gamma, Header Delta, Header 
Epsilon, Header Zeta, Header Eta Theta, Header Lambda

如您所见,有些短语有 2 个词,有些有 3 个词。有些在一行上,有些在一行和下一行之间分开。我的正则表达式代码是

([ ]|[])([A-Za-z0-9 ]+)(,)|([A-Za-z0-9 ]+\r\n[A-Za-z0-9]+)(,)

在查找语句中。

  1. ([ ]|[]) = 匹配 space 或不匹配 space
  2. ([A-Za-z0-9 ]+)(,)|([A-Za-z0-9 ]+\r\n[A-Za-z0-9]+) = 匹配字符或 space 直到逗号或匹配 字符或 space 直到回车 return 换行然后匹配 字符或 space 直到逗号

查找功能有效,但它很笨拙,而且替换功能会中断,因为有时我想用 \2 替换,有时我想用 \3 替换。

寻求有关如何将这一切组织起来的建议

"Header Alpha",
"Header Month",
"Header Year",
"Header Beta",
"Header Gamma",
"Header Delta",
"Header Epsilon",
"Header Zeta",
"Header Eta Theta",
"Header Lambda",

这里有一个想法,如何实现一个、两个或三个单词的短语的预期结果:

查找内容\s*(\w+)(?:\s+(\w+))?(?:\s+(\w+))?(,)?
替换为"(?2 )(?3 )"(?4,\n)

详情:

  • \s* - 零个或多个白色spaces
  • (\w+) - 第 1 组:一个或多个单词字符
  • (?:\s+(\w+))? - 一个或多个白色 space 的可选序列,然后是捕获到组 2
  • 中的一个或多个单词字符
  • (?:\s+(\w+))? - 一个或多个白色 space 的可选序列,然后是捕获到组 3
  • 中的一个或多个单词字符
  • (,)? - 捕获到第 4 组的可选逗号。

"(?2 )(?3 )"(?4,\n) 替换模式将匹配项替换为:

  • " - 一个 " 字符
  • </code> - 第 1 组值</li> <li><code>(?2 ) - 如果第 2 组匹配,添加 space + 第 2 组值
  • (?3 ) - 如果第 3 组匹配,添加 space + 第 3 组值
  • " - 一个 " 字符
  • (?4,\n) - 如果第 4 组匹配,则添加逗号和换行符。

查看演示截图:

好吧,notepad++ 的功能非常丰富,这段代码也可能是其他一些编辑器的替代品,它们只支持正则表达式....
查找:\s*(header)\s*(.*?)[,\n]
全部替换:" ",\n

全部替换后的附件