regex - 为什么 Perl 正则表达式不匹配 "\n"和后面的字符?

这是我的文件foo.txt:

a
b

这就是我正在做的:

$ perl -pi -e 's/\nb/z/g' foo.txt

文件中没有任何变化,而我希望它变成:

az

为什么?这是 Perl v5.34.0。

最佳答案

第一次评估替换时,您匹配a␊。第二次,对抗 b␊。所以这两个时间都不匹配。

您想匹配整个文件。您可以使用 -g-0777 告诉 Perl 在一行中考虑整个文件。

perl -i -gpe's/\nb/z/g' foo.txt    # 5.36+
perl -i -0777pe's/\nb/z/g' foo.txt

关于regex - 为什么 Perl 正则表达式不匹配 "\n"和后面的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74010026/

相关文章:

c++ - 如何在 SSE2 中为 8 位和 16 位整数实现 vector 右移和左移?

c# - 在 C# 中将小驼峰命名法转换为 PascalCase?

go - gcloud 函数部署 go 运行时错误 "undefined: unsafe.Slice

python - 在python中打印出两个列表的组合

ruby - 如何在 Ruby 中创建可调用属性

c - 使用个性系统调用使堆栈可执行

rust - Rust 中的一个可变借用或多个不可变借用……为什么?

r - 如何在组内创建字母序列?

Python - 如何删除以数字开头并包含句点的单词

c++ - 你能用折叠表达式实现 fn(x1 ^ fn(x0)) 吗?