perl - 从 Perl 字符串中删除特殊字符

标签 perl

我有这个字符串:

$x = \x02 . 'raz' . \x02;

如何清理它以仅包含“raz”?

我试试这个:

$x =~ s/^[a-zA-z0-9,]//g;

但我会得到:

SCALAR0x560917295870razSCALAR0x560917295900

如何获得“raz”?

最佳答案

如果您有 "\x02"生成的 5 个字符的字符串。 '拉兹'。 “\x02”,则以下内容将起作用:

$x =~ s/[^a-zA-z0-9,]//g;

注意我如何移动 ^

在字符类([...])之外,它表示“字符串的开头”(或使用 /m 时的“行的开头”) .

但作为字符类的第一个字符 ([^...]),它会否定字符类。它将匹配除列出的字符之外的所有字符。


\x02 。 '拉兹'。另一方面,\x02 生成 SCALAR(0xXXX)razSCALAR(0xXXX) 形式的字符串。

$ perl -M5.010 -e'say \x02 . "raz" . \x02;'
SCALAR(0x565362191c08)razSCALAR(0x565362163750)

你可以使用

$x =~ s/SCALAR\([^()]*\)//g;

请注意,您应该始终使用use strict;使用警告;。这本来可以避免导致垃圾产生的情况。

关于perl - 从 Perl 字符串中删除特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66174558/

相关文章:

perl - 如何使用 Perl 的本地时间和 print 来获取时间戳?

perl - 有哪些选项可用于跟踪临时结果并在重新启动后重新使用它们,以防程序在运行时终止?

perl - 是否有任何解决方法可以让 perl 调试器在尚未加载的模块上设置断点?

perl - 安装 perl 模块和复制整个文件夹有什么区别?

perl+ VBA : raise click event on a button embedded in a Powerpoint slide

java - 如何使用Java API在NetSuite中完成搜索?

python - 查找给定文件名的日期错误的文件

perl - 如何在 Perl 中组合哈希值?

perl - Apache2 从 CGI 内部重新加载配置

linux - 如何确保仅当脚本在 Windows 上运行时才加载模块?