【问题标题】:replace after "word" character by character in notepad ++?在记事本++中逐个字符替换“单词”之后?
【发布时间】:2016-06-18 23:04:36
【问题描述】:

我有一个字符串

"wordride 纯火"

我尝试用正则表达式替换

  • 查找内容:(?>(word)|\G(?<!^))\K\S
  • 替换为:$1$2$0

在记事本 ++ 中,它不会更改文本,但可以在 regex101 (https://regex101.com/r/aI6gE1/2) 中使用,其中 i 替换 word 之后的字符,如下所示

  • 第一次替换:wordwordide plain fire
  • 第二次替换:wordwordwordde plain fire
  • 第三次替换:wordwordwordworde plain fire
  • 第四次替换:wordwordwordwordword plain fire
  • 第五次替换:wordwordwordwordwordwordplain fire
  • 第六次替换:wordwordwordwordwordwordwordlain fire

您能否帮我查看错误或为此目的在 Notepad ++ 中给我一个解决方法:使用匹配组中未包含的组逐个字符替换“单词”之后的字符串

请帮帮我

【问题讨论】:

标签: regex notepad++


【解决方案1】:

答案是肯定的,只有借助 PythonScript 插件才能使用 Notepad++BUT

Get the plugin ready,并创建以下脚本:

import re

regex = r"^(word)(.+)"

def process_match(match):
    return "{0}{1}".format(match.group(1), "".join([match.group(1) for x in list(match.group(2))]))
editor.rereplace(regex, process_match)

^(word)(.+) 模式将在其开头与 word 匹配的行进入第 1 组,并将该行的所有其余部分匹配到第 2 组。

"{0}{1}".format(match.group(1), "".join([match.group(1) for x in list(match.group(2))])) 将首先将第 1 组的值粘贴到结果中(请参阅format(match.group(1)),然后"".join([match.group(1) for x in list(match.group(2))]) 会将第 2 组中的每个字符替换为第 1 组中的值。

这段文字:

word1
word1 2
wordride plain fire 

会变成:

注意:您可以通过调整(修改)(.+) 模式来控制word 之后的多少个字符被word 替换。

【讨论】:

    【解决方案2】:

    很难准确理解您想要做什么,但根据您的示例,以下内容正在发挥作用:

    • 查找:^((word)+).
    • 替换为:$1$2

    【讨论】:

    • 我认为它根本不起作用。参见the demo:只有word 之后的第一个字符被替换为单词。恕我直言,不可能进行 1 次正则表达式替换操作。
    • 那我还真没看懂他到底想干什么:)
    • 我刚切换到 csharp
    猜你喜欢
    • 2019-11-14
    • 2013-10-02
    • 2011-04-11
    • 2015-08-01
    • 2013-12-27
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多