NotePad ++的RegEx帮助

时间:2018-07-16 19:21:28

标签: regex notepad++

我需要RegEx的帮助,我只是想不通,我需要搜索有空格的破烂标签。

因此字符串是示例:

#ThisIsaHashtagWith Space

但是也可能有我不想替换的“ With Space”一词。

重要的是,字符串以“#”开头,​​然后是任何字符,然后是我要替换为“ WithSpace”以修复标签的单词“ With Space”。

我有一个文档,其中包含10k个损坏的#标签,我有点想整天都没有成功。

我已经在regex101.com上尝试过

使用以下正则表达式:  ^#+(?:.*?)+(With Space)

即使我认为它也可以在regex101.com上运行,但在Notepad ++中却无法使用

感谢您的帮助。

非常感谢。 BR

3 个答案:

答案 0 :(得分:1)

在当前的正则表达式中,您匹配一个#,然后一个字符和一个捕获组中的匹配(With Space)

您可以更改捕获组以捕获比赛的第一部分。

(#+.*?)With Space

然后您可以在替换中使用该组:

$1WithSpace

作为替代方案,您可以先匹配一个#,然后将零个或多个非贪婪字符.*?匹配零次或更多次,然后使用\K重置所报告匹配的起点。

然后匹配With Space

#+(?:.*?)\KWith Space

在替换中,使用WithSpace

如果您想匹配一次或多次#,则可以使用量词+。如果匹配项应从字符串的开头开始,则可以在正则表达式的开头使用锚点^

答案 1 :(得分:0)

请尝试将^(#.+?)(With\s+Space)用于正则表达式,因为它还会匹配多个空格和制表符-如果您要影响多行,请对标志执行gmi。我只是用以下两个字符串尝试过,每个字符串都在Notepad ++的单独一行中

#blablaWith Space
#hello#@#$aWith    Space

“替换为”值设置为$1WithSpace,我已经尝试了replaceAll和一一替换-似乎导致以下情况。

#blablaWithSpace
#hello#@#$aWithSpace

随时用您要替换的其他字符串发表评论。另外,请确保已在NPP中选择了“常规扩展名”搜索模式。

答案 2 :(得分:0)

尝试一下? (#.*)( )

我在Notepad ++中尝试过此操作,您应该可以将所有内容替换为$1。确保首先将查找模式设置为正则表达式。

const str = "#ThisIsAHashtagWith Space";

console.log(str.replace(/(#.*)( )/g, "$1"));