Replace 记事本++;停止在特定线路上更换

Replace 记事本++;停止在特定线路上更换,replace,notepad++,Replace,Notepad++,我一直在想办法,但我似乎不明白。我到处找了,但还是找不到 我正在尝试为带有自动热键的自动校正器制作一本词典,我需要将每行的开头替换为“:”,并将行之间的某个地方替换为另一行“:: 像这样: ::togehter::一起 现在我有大约20000个这样的东西要添加,没有“:”但是我现在做的是在替换文本框中: Replace: ^ With: :: 现在,它可以很好地用于第一行,但如果我按“全部替换”,因为我不可能在“替换”上单击20000次,它不仅从我所在的位置替换到底部,而且从开始也替换。因此,

我一直在想办法,但我似乎不明白。我到处找了,但还是找不到

我正在尝试为带有自动热键的自动校正器制作一本词典,我需要将每行的开头替换为“:”,并将行之间的某个地方替换为另一行“:: 像这样:
::togehter::一起
现在我有大约20000个这样的东西要添加,没有“:”但是我现在做的是在替换文本框中:

Replace: ^
With: ::
现在,它可以很好地用于第一行,但如果我按“全部替换”,因为我不可能在“替换”上单击20000次,它不仅从我所在的位置替换到底部,而且从开始也替换。因此,每一行现在都有一个新的“:”添加

因此,我需要的是能够告诉更换在哪一行停止,而不是做每一行

另外,如果你能帮我在第一个::(拼写错误的单词)后面加上“::(单词)”,那将是一个很大的帮助


我发现正则表达式用一些文本替换所有的
^
,即在每行开头添加一些文本,在某些版本的记事本++中不起作用。我的解决方法是使用
^(.)
作为搜索字符串,并在替换中包含
\1
。对于您的情况,替换将是
:\1
。这里的效果是将每行的第一个字符替换为
加上第一个字符。在Notepad++v7.1的快速测试中,将
^
替换为
可以正常工作

在执行全部替换之前,应在替换对话框中检查两件事:(1)选择了“正则表达式”和(2)未选择“在选择中”


问题不清楚输入中的两个单词是如何分开的,因此假设使用了一个或多个空格或制表符,则要使用的搜索字符串是
^(\w+)\h+
,替换字符串是
:\1:

此自动热键脚本可能会执行您所需的操作。 它保留以“::”开头的行不变, 并在其他文本中添加/替换文本。将原始文本复制到剪贴板,运行此脚本,然后将所需文本放入剪贴板。(要创建和运行脚本:将其复制并粘贴到文本编辑器中,并将其另存为myscriptname.ahk或myscriptname.txt,然后将文件拖放到AutoHotkey exe文件中。或者,如果将其另存为ahk文件并安装AutoHotkey,则可以双击以运行。)


请编辑您的问题并添加一些示例行和预期结果。您可以将需要替换的行集粘贴到新的文件缓冲区中。仅在此新缓冲区中执行“全部替换”。替换后,将行子集复制/粘贴回原始文件。只要行的子集是一个连续的块,此脚本就可以工作。此脚本可能与什么语言重复?提问者将如何运行它?他们将如何直接从记事本++运行它?提问者提到“自动热键”,这是公平的,但我会修改我的答案,使它对其他人更有用。
vText := Clipboard
vOutput := ""
VarSetCapacity(vOutput, StrLen(vText)*2*2)
StringReplace, vText, vText, `r`n, `n, All
Loop, Parse, vText, `n
{
vTemp := A_LoopField

if (vTemp = "")
if (1, vOutput .= "`r`n")
continue

if (SubStr(vTemp, 1, 2) = "::")
if (1, vOutput .= vTemp "`r`n")
continue

StringReplace, vTemp, vTemp, %A_Space%, ::, All
vOutput .= "::" vTemp "`r`n"
}
Clipboard := vOutput
MsgBox done
Return