我有 30,000 行文本,其中包含随机数量的空格。我需要在每行的第一个空格处添加一个字符。任何能提出建议的人都将不胜感激。
答案1
- Ctrl+H
- 找什么:
^\S+\h\K
- 用。。。来代替:
%
- 检查环绕
- 检查正则表达式
- Replace all
解释:
^ # beginning of line
\S+ # 1 or more non space
\h # 1 horizontal space
\K # forget all we've seen until this position
替代品:
% # the character to insert
鉴于:
I have 30,000 lines of text that have randon
number of spaces in them. I need to add a character
to just the first SPACE in each line.
Any who can suggest anything would be
greatly appreciated.
给定示例的结果:
I %have 30,000 lines of text that have randon
number %of spaces in them. I need to add a character
to %just the first SPACE in each line.
Any %who can suggest anything would be
greatly %appreciated.
答案2
试试 TextPad。您可以录制宏,然后播放它们。因此,记录您要对第一行执行的操作,完成第一行后,将光标留在下一行的开头。然后只需播放宏,直到文件末尾。或者只需按住播放宏键即可。
答案3
你正在寻找的是正则表达式。你要做的第一件事就是将搜索转换为正则表达式
我很高兴,因为我想我知道如何解决这个问题
https://regex101.com/r/aW4gG2/1
您想要的表达式是:
查找:(^.*?)( )
替换:\1#\2
其工作方式如下,在正则表达式中,表示()
“捕获”。这意味着它将找到这个高度特定的组,然后您可以在替换中使用 \1 或 \2 或 \3 引用它。数字从 1 开始,从开括号开始计数
^
表示从行首开始。(因为您希望插入内容覆盖第一个空格,所以我们将从前面开始查找第一个空格)
.*?
此部分查找空格前面的第一个单词。它通过将任意字符 ( .
) 分成一组来实现这一点,这些字符尽可能多 ( *
),但最少?
。如果没有问号,您将只捕获每个字符(包括所有空格)
( )
这部分表示我们的第二个组是第一个组后面的空格。这应该是第一个空格。这就是我们要插入角色的地方。
替代
\1#\2
\1
指第一个字符集。*
表达式中的表示字符集可以是任意长度的单词,包括0。
#
是插入字符
\2\
当然是空间。
结果是将 a 放在#
每个第一个空格前面。如果你想将它放在第一个空格之后,只需调整替换即可
\1\2#
将会把#
每行的第一个空格后方 放置。
这就是正则表达式的威力。简单的查找和替换就能比任何宏更精确地完成插入。它灵活、快速,而且大多数时候并不难。
这里有一个很棒的入门教程,可以解释什么是 RegEx 以及它为什么有用。[RegExOne] REO 让我明白了
这是很多人推荐的教程,但说实话我不太明白。[RegEx 信息]
我实际上从未回到 RegEx.info 我直接进入Notepad++ 文档这实际上在这一点上非常有帮助。当然,你可以用 [RegEx101]。您唯一需要做的就是/gm
在表达式中添加。然后,您可以将代码片段粘贴到 TestString 中并不断练习,直到正确为止。
答案4
对此有一个非常简单的解决方案。
我记得 Notepad++ 中已经有一些东西。
- 打开替换窗口
- 在“查找”字段中输入“^”,后跟一个空格或任何你想要查找的内容。
这将仅搜索行首的任何内容 - 在替换为字段中输入您需要的任何内容
- 将搜索模式设置为“正则表达式”
- 单击“全部替换”
- 完毕