regex - perl 正则表达式\Q mac os x

标签 regex macos perl

我正在尝试在 os x 终端中使用 perl 进行文本搜索和替换。我正在尝试使用以下行将特殊字符字符串“!@#$%^&*()”替换为字符串“特殊字符”:

perl -p -e 's/\Q!@#$%^&*()\E/special characters/g' 'hello.txt' > 'hello_new.txt'

但是它不起作用。\Q 在 OS X 上不起作用吗?它应该禁用正则表达式模式匹配。我不想自己逃离角色。我做错了什么?

最佳答案

$% perlvar 中的特殊变量并且正在被插值。

您可以通过简单地将 LHS 作为字符串输出来确认这一点:

$ perl -MData::Dump -E 'dd "\Q!@#$%^&*()\E"'
"\\!\\\@\\#0\\^\\&\\*\\(\\)"

要解决此问题,您只需转义正则表达式的 LHS 中的 $ 即可:

perl -pe 's/\Q!@#\$%^&*()\E/special characters/g' 'hello.txt' > 'hello_new.txt'

关于regex - perl 正则表达式\Q mac os x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33979470/

相关文章:

PHP preg_split by new line with\R

c# - .NET 正则表达式 - 如何查找具有特殊字符的术语 "surrounded"

xcode - 如何在 Xcode 4 中使用 dylib 文件创建工作框架

perl - 捕获稀疏矩阵的非零元素、计数和索引

mysql 占位符不适用于 DATE_ADD (perl)

php - 编写一个简单的语法分析器

regex - sed 需要正则表达式

cocoa - OSX/Cocoa 应用程序通常使用什么位置来存储数据文件?

xcode - 如何使用 CMake 将 Info.plist 捆绑在 MacOSX 应用程序中?

mysql - 记录集迭代