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

标签 regex notepad++

假设我有以下文本:

#Foo foo bar bar
foo bar foo
#bar Foo Foo
foo bar

假设我想将以 # 字符开头的行中的空格键替换为 - 字符。所以输出应该是:

#Foo-foo-bar-bar
foo bar foo
#bar-Foo-Foo
foo bar

我知道我可以使用这个正则表达式找到这些行:

/^#(.*)$/gm

但是我实际上可以以任何方式改变这些 $1 序列吗?

附注我在notepad++中使用正则表达式将Excel中的一些数据转换为代码(实际上非​​常方便)。

P.S.2 我还必须替换文本中的一些制表符,在对 Avinash Raj 的答案进行了一些修改后,我发现我可以使用这个正则表达式来做到这一点......除了它没有按预期工作,但 Avinash Raj 很友善,没有再次使用这个正则表达式提供帮助。

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

DEMO

最佳答案

我认为notepad++会支持\G 。 anchor \G 匹配上一个匹配结束的位置。

正则表达式:

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

替换字符串:

-

DEMO

如果您想用 - 替换单个空格,请尝试以下正则表达式,

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

关于regex - 是否可以替换正则表达式序列中的特定字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26117456/

相关文章:

javascript - 对两个捕获组求和

java - 如何将这个 Java 正则表达式转换为 Go 的正则表达式语法?

ruby - 如何为 Ruby 设置 Notepad++ 运行命令?

正则表达式:将单词开头的 <tags> 中的小写字母替换为大写字母

mysql - 删除MySQL数据库中的宽度高度属性值

单引号内单引号的正则表达式

python - 如何从 Python(旧版)格式字符串中提取字段名称?

mysql - 如何从 MYSQL 中获取文本的前 10 个字符减去一些字符

bash - 使用 NppExec(和 Cygwin)在 Notepad++ 中的 Windows 上运行 bash shell 脚本

text - 使用 Notepad++ 使用批处理文件查找文本