1

我有一个变量如何使用 perl 中的正则表达式来检查字符串中是否有空格?例如:

$test = "abc small ThisIsAVeryLongUnbreakableStringWhichIsBiggerThan20Characters";

所以对于这个字符串,它应该检查字符串中的任何单词是否不大于某些 x 字符。

4

4 回答 4

6
#!/usr/bin/env perl

use strict;
use warnings;

my $test = "ThisIsAVeryLongUnbreakableStringWhichIsBiggerThan20Characters";
if ( $test !~ /\s/ ) {
    print "No spaces found\n";
}

请务必阅读 Perl 中的正则表达式。

Perl 正则表达式教程 -perldoc perlretut

于 2012-07-31T01:09:31.880 回答
3

你应该看看perl regex 教程。根据您的问题调整他们的第一个“Hello World”示例如下所示:

if ("ThisIsAVeryLongUnbreakableStringWhichIsBiggerThan20Characters" =~ / /) {
    print "It matches\n";
}
else {
    print "It doesn't match\n";
}
于 2012-07-31T01:07:10.723 回答
2
die "No spaces" if $test !~ /[ ]/;        # Match a space
die "No spaces" if $test =~ /^[^ ]*\z/;   # Match non-spaces for entire string

die "No whitespace" if $test !~ /\s/;     # Match a whitespace character
die "No whitespace" if $test =~ /^\S*\z/; # Match non-whitespace for entire string
于 2012-07-31T01:25:32.543 回答
0

要找到最长的不间断非空格字符序列的长度,请写下

use strict;
use warnings;

use List::Util 'max';

my $string = 'abc small ThisIsAVeryLongUnbreakableStringWhichIsBiggerThan20Characters';

my $max = max map length, $string =~ /\S+/g;

print "Maximum unbroken length is $max\n";

输出

Maximum unbroken length is 61
于 2012-07-31T12:00:04.917 回答