Regex 在Perl中计算字符串中的非空白字符数

Regex 在Perl中计算字符串中的非空白字符数,regex,perl,Regex,Perl,我试图弄清楚如何计算字符串中的任何和所有非空白字符,以便在下面的示例中得到4的输出 my $str = 'A b C $'; my $cnt =~ /\S/g; print "Char Count: $cnt\n"; 这并不能回答我的问题 perl -e 'my $str = "A b C"; my $cnt = () = $str =~ /\./gi; print "Chs: $cnt\n";' Chs: 0 $str

我试图弄清楚如何计算字符串中的任何和所有非空白字符,以便在下面的示例中得到4的输出

my $str = 'A b C $'; 

my $cnt =~ /\S/g;  

print "Char Count: $cnt\n";
这并不能回答我的问题

perl -e 'my $str = "A b C"; my $cnt = () = $str =~ /\./gi;  print "Chs: $cnt\n";'
Chs: 0
$string = "ThisXlineXhasXsomeXx'sXinXit";
$count = ($string =~ tr/X//);
print "There are $count X characters in the string";
有人一直想说这个问题是这个问题的翻版:

然而,另一个问题涉及如何匹配一个特定的字符,在他们的情况下,我相信这是一个点。我看了许多其他的例子,这些例子试图匹配一个特定的字符,但无法使它们匹配除空格以外的所有字符

这并不能回答我的问题

perl -e 'my $str = "A b C"; my $cnt = () = $str =~ /\./gi;  print "Chs: $cnt\n";'
Chs: 0
$string = "ThisXlineXhasXsomeXx'sXinXit";
$count = ($string =~ tr/X//);
print "There are $count X characters in the string";
这个问题:只定义了各种Perl通配符运算符——其中一个(S运算符)我在原始问题中尝试使用,但没有用。但是,它并没有说明如何实际使用其中一个运算符来获取字符串中所有非空白字符的计数。

来源:

另一个版本在列表上下文中使用全局匹配,然后分配 将结果转换为标量,生成匹配数的计数

您还可以从命令行查询Perl文档:

perldoc-q计数

use warnings;
use strict;

my $str = 'A b C $'; 
my $cnt = () = $str =~ /\S/g;
print "Char Count: $cnt\n";
要求5.014;
使用功能qw(unicode_字符串);
我的$count=()=$str=~/\S/g;

要求5.014;
使用功能qw(unicode_字符串);
我的$count=0;
++$count而$str=~/\S/g;

#计数非空白字符。
我的个人统计数字=我的个人统计数字=我的个人统计数字=我的个人统计数字=我的个人统计数字=我的个人统计数字=我的个人统计数字=我的一元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元元\ x{2029}\x{202F}\x{205F}\x{3000}//c;
  • 第一个会占用大量内存。它为每个非空白字符创建标量

  • 第二个没有。我不确定是快还是慢

  • 第三个应该快得多,但不能使用预构建的角色类

  • 要求5.014;使用功能qw(unicode_字符串)(或仅使用
    5.014;
    )是
    \s
    /
    \s
    正确处理U+85 NEL和U+A0 NBSP所必需的。(更高版本也可以。)否则,它将“随机”被视为空间或非空间

    使用功能qw(比如说);
    {local$\=“abc\x{0085}\x{00A0}\x{2000}”;表示标量(()=/\S/g);}3
    {local$\=“abc\x{0085}”说标量(()=/\S/g);}#4?!
    {local$\=“abc\x{00A0}”说标量(()=/\S/g);}#4?!
    {local$\=“abc\x{2000}”表示标量(()=/\S/g);}#3