在字符串后面插入一个字符串的副本(没有特定的字符串可以找到)

时间:2014-10-19 05:11:17

标签: regex vim grep notepad++

所以,我正在学习使用文本编辑器中的正则表达式来操作字符串,我想知道如何制作字符串的副本并在第一个字符串之后插入该副本

当我说要在同一个字符串后插入一个字符串的副本时,我的意思是在它之后插入一个字符串插入的副本,而不是指定它的特定标识。

例如给出字符串

“所以,我正在学习使用文本编辑器中的正则表达式来操作字符串”

我希望能够使用正则表达式将其转换为

“所以,我正在学习使用文本编辑器中的正则表达式来操作字符串”

现在,对于那些认为这是明智的人,请务必阅读我声明我正在学习的部分。 。 。如果您认为这低于您的水平,可以跳过您的评论或回复。

4 个答案:

答案 0 :(得分:1)

在vim中,您可以进行搜索和替换:

:%s/\(textpattern\)/\1\1/g

其中\1包含\(\)内的文字。

我不知道如何在notepadd ++中做同样的事情。

答案 1 :(得分:1)

您想在替换字符串中创建group and then use a backrefrence

所以,如果你在:s/\(Hello\)/\1\1/上运行:

Hello, World!

你应该

HelloHello, World!

反向引用\0始终引用整个匹配,因此您可以更简单地将其写为:s/Hello/\0\0并获得相同的结果。

以上是针对Vim的。在grep中,/不用于分组,但后引用是相同的。您可以搜索不同编辑器中的反向引用,以查看它们使用的语法。

答案 2 :(得分:1)

您想要使用capturing group来回忆匹配的内容......

捕获组可以在以后的正则表达式中用作对该捕获组中匹配的内容的反向引用。它们是通过将要分组的字符放在一组括号( )内创建的。反向引用被指定为反斜杠(\),后跟一个数字,表示要调用的组的编号。

以下是使用Notepad ++的示例...

Find: (foo)
Replace: \1-\1

所以\1是匹配组的反向引用,前三个字符是“foo”。

答案 3 :(得分:1)

(对于Notepad ++):

找到:^(\w+)
替换为:$1 $1

其中:

正则表达式部分:

^     : begining of line
(     : start capture group 1
  \w+ : one or more word character, ie. [a-zA-Z0-9_]
)     : end of group 1

替换部分:

$1    : content of group 1
      : a space
$1    : content of group 1