我有一个QString,我想算一下QString中的2件事:

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中的特殊字符数。

最佳答案

对于第一个。请尝试这个。

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

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

对于第二个,只需一个\\ 1即可匹配连续的2个字符。 \\ 1表示第一个匹配组的相同字符,因此您的正则表达式实际上匹配连续的3个字符。
  QRegularExpression var2("([a-z\\d])\\1");

关于c++ - QRegularExpression计数出现次数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27791683/

10-16 06:14