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:
),然后是0+水平空白符号Something:
-零个或多个非空白字符\S*
-一个匹配重置操作符,它将丢弃迄今为止匹配的所有文本\K
-1个或多个水平空白\h+
您需要先复制行: 查找内容:
^Something:.$
替换为:
$&\r\n$&
单击“全部替换” 然后,使用 查找内容:
(?:\G(?)|^(某物:.*)\R(?=\1$)某物:\h*)\S*\K\h+
替换为:空字符串(保留为空) 详细信息:
-匹配上一个成功匹配的结尾或以(?:\G(?)|^(Something:..*)\R(?=\1$)Something:\h*)
开头直到换行符的行,以及下一个与前一行相等的行(其起始词Something:
),然后是0+水平空白符号Something:
-零个或多个非空白字符\S*
-一个匹配重置操作符,它将丢弃迄今为止匹配的所有文本\K
-1个或多个水平空白\h+
您的意思是在
某物之后删除行中的空格:
?尝试(?:\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+
-->替换为:空字符串(保留为空)。