这是我的输入字符串:
bar somthing foo bar somthing foo
我想计算一个字符的数字(例如:' t')bar& FOO
bar somthing foo - > 1
bar somthing foo - > 1个
我知道我们可以使用
/bar(.*?)foo/
,然后用match函数计算match [1]中的字符数
有无法计算字符串函数的方法吗?
答案 0 :(得分:1)
Perl解决方案:
$_ = 'bar test this thing foo';
my $count = /bar(.*?)foo/ && $1 =~ tr/t//;
print $count;
输出:
4
只是为了好玩,使用(?{ code })
的单个表达式:
$_ = 'bar test this thing foo';
my $count = 0;
/bar ( (?:(?!bar)[^t])*+ ) (?:t (?{ ++$count; }) (?-1) )*+ foo/x or $count = 0;
print $count;
答案 1 :(得分:0)
@Qtax:主题说PCRE ......所以它并不完全是perl。因此(?{code})很可能不受支持(更不用说完整的perl代码)。 虽然两种解决方案都很酷;)
@tqwer:你可以得到匹配,然后用“”替换[^ t]并检查长度.. 虽然我不确定用正则表达式计算的逻辑是什么;)