将短语用引号括起来 Notepad++
Posted
技术标签:
【中文标题】将短语用引号括起来 Notepad++【英文标题】:wrap phrases in quotes Notepad++ 【发布时间】:2022-01-15 10:29:48 【问题描述】:我已经看了很多,但找不到确切的解决方案。我需要在 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]+)(,)
在 find 语句中。
-
([ ]|[]) = 匹配空格或没有空格
([A-Za-z0-9 ]+)(,)|([A-Za-z0-9
]+\r\n[A-Za-z0-9]+) = 匹配字符或空格,直到逗号或匹配
字符或空格直到回车换行然后匹配
逗号之前的字符或空格
find 函数可以工作,但它很笨拙,并且 replace 函数会中断,因为有时我想用 \2 替换,有时我想用 \3 替换。
寻求有关如何组织这一切的建议
"Header Alpha",
"Header Month",
"Header Year",
"Header Beta",
"Header Gamma",
"Header Delta",
"Header Epsilon",
"Header Zeta",
"Header Eta Theta",
"Header Lambda",
【问题讨论】:
【参考方案1】:下面是一个想法,如何实现一个、两个或三个单词的短语的预期结果:
查找内容:\s*(\w+)(?:\s+(\w+))?(?:\s+(\w+))?(,)?
替换为:"$1(?2 $2)(?3 $3)"(?4,\n)
详情:
\s*
- 零个或多个空格
(\w+)
- 第 1 组:一个或多个单词字符
(?:\s+(\w+))?
- 一个或多个空格的可选序列,然后将一个或多个单词字符捕获到第 2 组中
(?:\s+(\w+))?
- 一个或多个空格的可选序列,然后将一个或多个单词字符捕获到第 3 组中
(,)?
- 捕获到第 4 组的可选逗号。
"$1(?2 $2)(?3 $3)"(?4,\n)
替换模式将匹配替换为:
"
- 一个 "
字符
$1
- 第 1 组值
(?2 $2)
- 如果第 2 组匹配,则添加空格 + 第 2 组值
(?3 $3)
- 如果第 3 组匹配,则添加空格 + 第 3 组值
"
- 一个 "
字符
(?4,\n)
- 如果第 4 组匹配,则添加逗号和换行符。
查看演示截图:
【讨论】:
这非常有帮助。是的,在这种情况下,所有短语都有 2 或 3 个单词,但它确实引出了一个可能超过 3 个单词的场景的问题。我将您的答案标记为最佳,非常感谢您的贡献。非常感谢。【参考方案2】:notepad++ 的功能非常丰富,这段代码也可能是其他一些编辑器的替代品,它们只支持正则表达式 ....
查找:\s*(header)\s*(.*?)[,\n]
全部替换:"$1 $2",\n
全部替换后的附件
【讨论】:
以上是关于将短语用引号括起来 Notepad++的主要内容,如果未能解决你的问题,请参考以下文章
复制用双引号括起来的 Redshift Pipe Delimited
当我用单引号将字符串括起来时,C++ std::cout 打印奇怪的字符[重复]
QSettings:是不是可以始终保存用双引号括起来的字符串?