聘我网

新概念招聘3.0

如何用正则判断某个串的开头部分是否为'xxx',`...`类型的子串?

vote up0vote downstar

比如q{'a\'b'test}就是,

q{'a\'btest}就不是,

因为'不平衡,没关闭

 

1 个答复

vote up0vote downcheck
use strict;
use warnings;

sub is_delimiter_balanced {
    my ($delimiter, $text) = @_;
    return
    (
    substr($text,0,1) =~ m|^[\Q$delimiter\E]| 
    and 
    $text =~ m/ \Q$delimiter\E [^\\$delimiter]* (\\.[^\\$delimiter]*)* \Q$delimiter\E /gcsx
    );
}

use Data::Dumper;
print "first:\n";
print Dumper(is_delimiter_balanced(q{'}, q{'a\'b'test}));
print "second:\n";
print Dumper(is_delimiter_balanced(q{'}, q{'a\'btest}));

输出:

first:
$VAR1 = '\\\'b';
second:
链接

您的回答





不是您要找的问题? 浏览其他含有标签 的问题或者 自己问个.