我需要RegEx的帮助,我只是想不通,我需要搜索有空格的破烂标签。
因此字符串是示例:
#ThisIsaHashtagWith Space
但是也可能有我不想替换的“ With Space”一词。
重要的是,字符串以“#”开头,然后是任何字符,然后是我要替换为“ WithSpace”以修复标签的单词“ With Space”。
我有一个文档,其中包含10k个损坏的#标签,我有点想整天都没有成功。
我已经在regex101.com上尝试过
使用以下正则表达式:
^#+(?:.*?)+(With Space)
即使我认为它也可以在regex101.com上运行,但在Notepad ++中却无法使用
感谢您的帮助。
非常感谢。 BR
答案 0 :(得分:1)
在当前的正则表达式中,您匹配一个#
,然后一个字符和一个捕获组中的匹配(With Space)
。
您可以更改捕获组以捕获比赛的第一部分。
然后您可以在替换中使用该组:
$1WithSpace
作为替代方案,您可以先匹配一个#
,然后将零个或多个非贪婪字符.*?
匹配零次或更多次,然后使用\K
重置所报告匹配的起点。
然后匹配With 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"));