Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 是否从字符串中删除除空格以外的特殊字符?_Regex_Perl - Fatal编程技术网

Regex 是否从字符串中删除除空格以外的特殊字符?

Regex 是否从字符串中删除除空格以外的特殊字符?,regex,perl,Regex,Perl,你好,我正在尝试删除数字和特殊字符,以下字符串中的空格除外: $string = 'ClA�\u0083A�A�ment Lecigne'; 使用以下代码: $string =~ tr/a-zA-Z//dc; 我们获得以下信息: "ClAuAAmentLecigne" 我真正需要的是: "ClAuAAment Lecigne" 有人能帮我改进代码吗?谢谢,只需在tr/a-zA-Z//dc中添加一个空格 $string = 'ClA�\u0083A�A�ment Lecigne'; $s

你好,我正在尝试删除数字和特殊字符,以下字符串中的空格除外:

$string = 'ClA�\u0083A�A�ment Lecigne';
使用以下代码:

$string =~ tr/a-zA-Z//dc;
我们获得以下信息:

"ClAuAAmentLecigne" 
我真正需要的是:

"ClAuAAment Lecigne"

有人能帮我改进代码吗?谢谢,

只需在
tr/a-zA-Z//dc中添加一个空格

$string = 'ClA�\u0083A�A�ment Lecigne';
$string =~ tr/a-zA-Z //dc;
print $string . "\n";
输出:

ClAuAAment Lecigne

只需在
tr/a-zA-Z//dc中添加一个空格

$string = 'ClA�\u0083A�A�ment Lecigne';
$string =~ tr/a-zA-Z //dc;
print $string . "\n";
输出:

ClAuAAment Lecigne

有相当多的空白字符

$ unichars '\s'
 ---- U+0009 CHARACTER TABULATION
 ---- U+000A LINE FEED
 ---- U+000B LINE TABULATION
 ---- U+000C FORM FEED
 ---- U+000D CARRIAGE RETURN
 ---- U+0020 SPACE
 ---- U+0085 NEXT LINE
 ---- U+00A0 NO-BREAK SPACE
 ---- U+1680 OGHAM SPACE MARK
 ---- U+2000 EN QUAD
 ---- U+2001 EM QUAD
 ---- U+2002 EN SPACE
 ---- U+2003 EM SPACE
 ---- U+2004 THREE-PER-EM SPACE
 ---- U+2005 FOUR-PER-EM SPACE
 ---- U+2006 SIX-PER-EM SPACE
 ---- U+2007 FIGURE SPACE
 ---- U+2008 PUNCTUATION SPACE
 ---- U+2009 THIN SPACE
 ---- U+200A HAIR SPACE
 ---- U+2028 LINE SEPARATOR
 ---- U+2029 PARAGRAPH SEPARATOR
 ---- U+202F NARROW NO-BREAK SPACE
 ---- U+205F MEDIUM MATHEMATICAL SPACE
 ---- U+3000 IDEOGRAPHIC SPACE
如果你想继续使用
tr///
,你必须把它们都列出来

$string =~ tr/a-zA-Z\x09\x0A\x0B...\x{3000}//dc;
切换到
s//
更简单

$string =~ s/[^\pL\s]//g;   # Remove all but letters and whitespace

有相当多的空白字符

$ unichars '\s'
 ---- U+0009 CHARACTER TABULATION
 ---- U+000A LINE FEED
 ---- U+000B LINE TABULATION
 ---- U+000C FORM FEED
 ---- U+000D CARRIAGE RETURN
 ---- U+0020 SPACE
 ---- U+0085 NEXT LINE
 ---- U+00A0 NO-BREAK SPACE
 ---- U+1680 OGHAM SPACE MARK
 ---- U+2000 EN QUAD
 ---- U+2001 EM QUAD
 ---- U+2002 EN SPACE
 ---- U+2003 EM SPACE
 ---- U+2004 THREE-PER-EM SPACE
 ---- U+2005 FOUR-PER-EM SPACE
 ---- U+2006 SIX-PER-EM SPACE
 ---- U+2007 FIGURE SPACE
 ---- U+2008 PUNCTUATION SPACE
 ---- U+2009 THIN SPACE
 ---- U+200A HAIR SPACE
 ---- U+2028 LINE SEPARATOR
 ---- U+2029 PARAGRAPH SEPARATOR
 ---- U+202F NARROW NO-BREAK SPACE
 ---- U+205F MEDIUM MATHEMATICAL SPACE
 ---- U+3000 IDEOGRAPHIC SPACE
如果你想继续使用
tr///
,你必须把它们都列出来

$string =~ tr/a-zA-Z\x09\x0A\x0B...\x{3000}//dc;
切换到
s//
更简单

$string =~ s/[^\pL\s]//g;   # Remove all but letters and whitespace


\u0083
代表什么?这是一个单一的字符。为什么在预期输出中添加了
u
?除了
a-zA-Z
之外,你什么都不替换,为什么你希望看到一个空格?此外,您应该看到
claamentlecigne
not
claamentlecigne
@Braj\u0083这与字符ASCII和UTF8转换有关。我不知道这是什么意思。然而,我可以说,这\u0083可能代表一种口音。@Huntermillen,正如我所说,它保留了所有字符,并替换了所有特殊字符和数字。@SamuelDonadelli它删除了
a-zA-Z
的补码,而
a-zA-Z
不代表任何东西。
\u0083
代表什么?这是一个单一的字符。为什么在预期输出中添加了
u
?除了
a-zA-Z
之外,你什么都不替换,为什么你希望看到一个空格?此外,您应该看到
claamentlecigne
not
claamentlecigne
@Braj\u0083这与字符ASCII和UTF8转换有关。我不知道这是什么意思。然而,我可以说,这\u0083可能代表一种口音。@HunterMcMillen,正如我所说,它保留了所有字符并替换了所有特殊字符和数字。@SamuelDonadelli它删除了
a-zA-Z
的补码,而
a-zA-Z
。输出中的
u
在哪里:)正如OP查找
clauament一样Lecigne
@braj,对我来说,我认为perl将
\u0083
解释为另一个字符。当运行op的代码时,我也不会得到
u
。我想如果他看到
u
,它对他仍然有效。也许是不同版本的perl?@Matt它帮助了我!谢谢,@Braj,缺少的
u
是因为OP和Matt打算使用
$string='…'而不是
$string=“…”OP要求保留空格,但你去掉了很多。它返回“abcdef”表示“abc def”(这是一个选项卡)。输出中的
u
:在OP查找
cluaament Lecigne
@braj时,我认为perl将
\u0083
解释为另一个字符。当运行op的代码时,我也不会得到
u
。我想如果他看到
u
,它对他仍然有效。也许是不同版本的perl?@Matt它帮助了我!谢谢,@Braj,缺少的
u
是因为OP和Matt打算使用
$string='…'而不是
$string=“…”OP要求保留空格,但你去掉了很多。它返回“abcdef”表示“abc def”(这是一个选项卡)。