QRegularExpression计数出现次数

时间:2015-01-06 03:33:21

标签: c++ regex qt

我有一个QString,我想在QString中计算两件事:

a)特殊字符的数量

b)连续2个字符的数量

首先我尝试了这个:

QRegularExpression var1("[$&+,:;=?@#|'<>.^*()%!-]");
myString.count(var1);

我不知道如何计算反斜杠和削减字符,我不确定这是否是检查所有特殊字符的方法。

对于第二个我试过这个:

QRegularExpression var2("([a-z\\d])\\1\\1");
myString.count(var2);

还有这个:

QRegularExpression var2("([a-zA-Z0-9\\d])\\1\\1");
myString.count(var2);

根本不起作用。

请建议,我需要QString中连续字符的数量和特殊字符的数量。

1 个答案:

答案 0 :(得分:0)

第一个。请试试这个。

  QRegularExpression var1("[$&+,:;=?@#|'<>.^*()%!-/\\\\]");

你可以像其他字符一样用斜线计算斜线数。 要反斜杠char,你需要4个反斜杠。在正则表达式中,您需要转义反斜杠char以匹配反斜杠char(\\)。在C ++中,您还需要逃避这两个反斜杠。因此,您需要4个反斜杠。

对于第二个,您只需要一个\\ 1来匹配连续的2个字符。 \\ 1表示第一个匹配组的相同字符,因此您的正则表达式实际上匹配连续的3个字符。

  QRegularExpression var2("([a-z\\d])\\1");