首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配特殊字符的正则表达式

匹配特殊字符的正则表达式
EN

Stack Overflow用户
提问于 2021-09-06 05:39:13
回答 1查看 183关注 0票数 2

在一个文本文件中有许多特殊字符(行终止符: LF;文件编码: utf-8),我正在处理其中的两个字符。它们对应的十六进制码是\xf4\x80\x91\x9a\xf4\x80\x91\x9d

出于测试目的,您可以将以下文本放入文本文件1.txt:a and a at the line end,也可以使用此文件:https://drive.google.com/file/d/1E-8oZaLb86x0JE_gFpTkeX9jrbh3OXbF/view?usp=sharing

在“崇高”这样的编辑器中,我无法用它们的十六进制代码来匹配这些特殊字符。不确定是否还有其他方法可以做到。

使用perl,我也无法与它们相匹配。我想用regex删除所有这些类似汉堡包的字符:

perl -Mutf8::all -pE's,\xf4\x80\x91\x9a,,g; s,\xf4\x80\x91\x9d,,g;' 1.txt > 2.txt

有什么办法我能做到吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-06 17:06:12

您能否尝试将文件读取为字节/二进制(使用:raw IO层):

代码语言:javascript
复制
use feature qw(say);
use strict;
use warnings;

my $fn = 'test.txt';
open ( my $fh, '<:raw', $fn ) or die "Could not open file '$fn': $!";
my $txt = do { local $/; <$fh> };
close $fh;
my @replace = ("\xf4\x80\x91\x9a", "\xf4\x80\x91\x9d");
my ($pat ) = map {qr/$_/} join "|", map quotemeta, @replace;
$txt =~ s/$pat//g;
print $txt;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69069579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档