Regex 记事本++;Rexex删除字符之间未知的多个空格

Regex 记事本++;Rexex删除字符之间未知的多个空格,regex,notepad++,Regex,Notepad++,虽然我不是专家,但我可以通过某种方式消除字符之间已知的空格,例如 Something: INITIALIZATION OF Something: PROPERTY PMISTATE Something: 12 23 查找: ^(.*)([a-z0-9]+)\s([a-z0-9]+) 替换: \1\2 \3\n\1\2\3\n 结果: Something: INITIALIZATION OF Something: INITIALIZATIONOF Something: PROPERTY P

虽然我不是专家,但我可以通过某种方式消除字符之间已知的空格,例如

Something: INITIALIZATION OF
Something: PROPERTY PMISTATE
Something: 12 23
查找:

^(.*)([a-z0-9]+)\s([a-z0-9]+)
替换:

\1\2 \3\n\1\2\3\n
结果:

Something: INITIALIZATION OF
Something: INITIALIZATIONOF

Something: PROPERTY PMISTATE
Something: PROPERTYPMISTATE

Something: 12 23
Something: 1223
但是,如果空间的外观或数量不为人所知,例如 我想替换这些词

Something: INITIALIZATION OF
Something: PROPERTY PMISTATE PMISTATE
Something: 12 23 23 .GET()
详情如下:

Something: INITIALIZATION OF
Something: INITIALIZATIONOF

Something: PROPERTY PMISTATE PMISTATE
Something: PROPERTYPMISTATEPMISTATE

Something: 12 23 .GET()
Something: 1223.GET()

您需要先复制这些行:

查找内容:
^Something:.$

替换为:
$&\r\n$&

单击“全部替换”

然后,使用

查找内容:
(?:\G(?)|^(某物:.*)\R(?=\1$)某物:\h*)\S*\K\h+

替换为:空字符串(保留为空)

详细信息

  • (?:\G(?)|^(Something:..*)\R(?=\1$)Something:\h*)
    -匹配上一个成功匹配的结尾或以
    Something:
    开头直到换行符的行,以及下一个与前一行相等的行(其起始词
    Something:
    ),然后是0+水平空白符号
  • \S*
    -零个或多个非空白字符
  • \K
    -一个匹配重置操作符,它将丢弃迄今为止匹配的所有文本
  • \h+
    -1个或多个水平空白

您需要先复制行:

查找内容:
^Something:.$

替换为:
$&\r\n$&

单击“全部替换”

然后,使用

查找内容:
(?:\G(?)|^(某物:.*)\R(?=\1$)某物:\h*)\S*\K\h+

替换为:空字符串(保留为空)

详细信息

  • (?:\G(?)|^(Something:..*)\R(?=\1$)Something:\h*)
    -匹配上一个成功匹配的结尾或以
    Something:
    开头直到换行符的行,以及下一个与前一行相等的行(其起始词
    Something:
    ),然后是0+水平空白符号
  • \S*
    -零个或多个非空白字符
  • \K
    -一个匹配重置操作符,它将丢弃迄今为止匹配的所有文本
  • \h+
    -1个或多个水平空白


您的意思是在
某物之后删除行中的空格:
?尝试
(?:\G(?!^)^Something:\h*)\S*\K\h+
删除。您的意思是在Something之后处理多个单词:?是的,我的意思是在
Something:
之后处理多个空格:否,似乎您想先复制行,对吗?然后对第二次出现的内容执行替换。确切地说,我希望保留原始文本,然后将处理后的文本添加为注释,以便进一步逐个处理。您的意思是在
某物:
之后删除行中的空格?尝试
(?:\G(?!^)^Something:\h*)\S*\K\h+
删除。您的意思是在Something之后处理多个单词:?是的,我的意思是在
Something:
之后处理多个空格:否,似乎您想先复制行,对吗?然后在第二次出现时执行替换。准确地说,我想保留原始文本,然后将处理后的文本添加为注释,以便进一步逐个处理。我们也可以这样做,而无需替换行,只需在末尾添加文本,例如
Something:INITIALIZATIONOF
的初始化,我们在此处添加了文本
INITIALIZATIONO
你是说第一步吗?不知道,这是没有必要的。如果我在复制行时大写,当替换为
$&\r\n\U$&\E
时,然后找到什么:
(?:\G(?)|^^(某物:.*)\r(?=\1$)某物:\h*)\S*\K\h+
不起作用,您是否也可以对此提出一些建议,或者在我完成工作后简单地如何删除重复的行!!您可以通过使用
(?i:\1)
包装
\1
来使
\1
不区分大小写。嗯,我最初的回答是正确的:没有创建重复的行。查找内容:
(?:\G(?)^Something:\h*)\S*\K\h+
-->替换为:空字符串(保留为空)。谢谢。我们也可以不用换行,只需在末尾添加文本即可,例如
某物:初始化的初始化
,我们在末尾添加了文本
初始化
,您是指第一步吗?不知道,这是没有必要的。如果我在复制行时大写,当替换为
$&\r\n\U$&\E
时,然后找到什么:
(?:\G(?)|^^(某物:.*)\r(?=\1$)某物:\h*)\S*\K\h+
不起作用,您是否也可以对此提出一些建议,或者在我完成工作后简单地如何删除重复的行!!您可以通过使用
(?i:\1)
包装
\1
来使
\1
不区分大小写。嗯,我最初的回答是正确的:没有创建重复的行。查找内容:
(?:\G(?)^Something:\h*)\S*\K\h+
-->替换为:空字符串(保留为空)。