簡體   English   中英

使用 perl 腳本從字符串中刪除特殊字符

[英]Removal of special characters from string using perl script

我有一個如下的字符串

stringinput = Sweééééôden@

我想得到 output 之類的

stringoutput = Sweden

必須刪除 spl 字符ééééô@

我正在使用

$stringoutput = `echo $stringinput | sed 's/[^a-z  A-Z 0-9]//g'`;

我得到了像Sweééééôden這樣的結果,但ééééô沒有被刪除。

你能建議我補充什么嗎

無需從 Perl 調用 sed,perl 可以自己進行替換。 它也更快,因為您無需啟動新流程。

#!/usr/bin/perl
use warnings;
use strict;
use utf8;

my $string = 'Sweééééôden@';
$string =~ s/[^A-Za-z0-9]//g;
print $string;

您需要在sed命令之前使用LC_ALL=C以使[A-Za-z]字符 class 根據 ASCII 表創建范圍:

stringoutput=$(echo $stringinput | LC_ALL=C sed 's/[^A-Za-z0-9]//g')

查看在線演示

stringinput='Sweééééôden@';
stringoutput=$(echo $stringinput | LC_ALL=C sed 's/[^A-Za-z0-9]//g');
echo "$stringoutput";
# => Sweden

請參閱POSIX 正則表達式參考

在默認的 C 語言環境中,排序順序是本機字符順序; 例如,“[ad]”等價於“[abcd]”。 在其他語言環境中,未指定排序順序,並且“[ad]”可能等同於“[abcd]”或“[aBbCcDd]”,或者它可能無法匹配任何字符或它所匹配的字符集匹配甚至可能是不穩定的。 要獲得括號表達式的傳統解釋,您可以通過將 LC_ALL 環境變量設置為值“C”來使用“C”語言環境。

在 Perl 中,您可以簡單地使用

my $stringinput = 'Sweééééôden@';
my $stringoutput = $stringinput =~ s/[^A-Za-z0-9]+//gr;
print $stringoutput;

請參閱此在線演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM