【发布时间】:2014-03-12 05:38:39
【问题描述】:
我有一个由 1 和破折号组成的二进制 $strings 列表。
1--1-1-111---1--
1--1-11111111-11
1111-11111--1111
我正在从一个 txt 文件中检索它,以计算每个字符串中存在多少连续破折号。例如,在第一个字符串中,存在 3 个连续破折号出现一次,2 个破折号出现两次,单个破折号出现 3 次的一段。在第二个字符串中,我有一段连续的 2 个破折号和两次出现的单个破折号。
我想要的结果是输出或保留在数组或散列中以供进一步操作,连续破折号的出现和此符号中的频率:
3-1, 2-2, 1-3
2-1, 1-2
2-1, 1-1
我正在使用这个语句来计算全局破折号的出现次数:
$dash_freq = (($string =~ tr/-//) + 1);
但是,我想知道正则表达式如何计算连续出现的频率。
【问题讨论】:
-
我不认为你可以用正则表达式来做到这一点。写个循环就好了。
-
每个字符串的长度可以有很大的不同。它们的长度不一样。
-
为什么这是个问题?只需遍历字符串中的所有字符。