Regex 是否可以替换正则表达式序列中的特定字符?

Regex 是否可以替换正则表达式序列中的特定字符?,regex,notepad++,Regex,Notepad++,假设我有以下文本: #Foo foo bar bar foo bar foo #bar Foo Foo foo bar 假设我想用以字符开头的行中的a字符替换空格键。因此,输出应为: #Foo-foo-bar-bar foo bar foo #bar-Foo-Foo foo bar 我知道我可以用这个正则表达式找到这些行: /^#(.*)$/gm 但我真的能以任何方式改变那些1美元的序列吗 另外,我正在使用notepad++中的正则表达式将excel中的一些数据转换为代码,实际上非常方便

假设我有以下文本:

#Foo foo bar bar
foo bar foo
#bar Foo Foo
foo bar
假设我想用以字符开头的行中的a字符替换空格键。因此,输出应为:

#Foo-foo-bar-bar
foo bar foo
#bar-Foo-Foo
foo bar
我知道我可以用这个正则表达式找到这些行:

/^#(.*)$/gm
但我真的能以任何方式改变那些1美元的序列吗

另外,我正在使用notepad++中的正则表达式将excel中的一些数据转换为代码,实际上非常方便

p.S.2我还必须替换文本中的一些制表符,在修改了Avinash Raj的答案后,我发现我可以使用这个正则表达式来完成这项工作。。。除了它没有按预期工作,但阿维纳什·拉吉对这个正则表达式再次提供了帮助

/(?:^#|(?<!^)\G)[\S ]*\K\t/gm

我认为记事本++会支持。锚点\G在上次匹配结束的位置匹配

正则表达式:

(?:^#|(?<!^)\G)\S*\K[ \t]+
如果要用-替换单个空格,请尝试下面的正则表达式

(?:^#|(?<!^)\G)\S*\K[ \t]

你的预期输出是什么?@AvinashRaj有效点,完全忘记了那个-"@AvinashRaj将预期输出添加到问题“为什么?”?它只会导致模式无法与foo\t bar一起使用。为什么是“+”?这将把多个连续的空格转换成一个破折号。@Rawing我认为现在它适用于所有情况。或者简单地使用\h而不是[\t]谢谢第二个示例。虽然第一个测试可以处理问题中提供的测试数据,但当我修改它以适合我的具体问题时,它不起作用。然而,第二个例子在我的修改中起到了预期的作用。我认为这是因为输入文件中存在制表符。普通空格与制表符不匹配,\s还会与新行符匹配。所以我在character类中添加了空格和\t。您能看一下吗?我以为我设法修改了你的正则表达式来替换制表器,但它似乎并没有重复行的末尾。
(?:^#|(?<!^)\G)\S*\K[ \t]