计算字符数的PCRE模式

时间:2012-03-12 12:31:11

标签: regex pcre

这是我的输入字符串:
bar somthing foo bar somthing foo

我想计算一个字符的数字(例如:' t')bar& FOO
bar somthing foo - > 1
bar somthing foo - > 1个

我知道我们可以使用
/bar(.*?)foo/
,然后用match函数计算match [1]中的字符数

有无法计算字符串函数的方法吗?

2 个答案:

答案 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]并检查长度.. 虽然我不确定用正则表达式计算的逻辑是什么;)