QRegExp查找不在HTML标记中的第n个字符

QRegExp查找不在HTML标记中的第n个字符,regex,qt,qregexp,Regex,Qt,Qregexp,假设我有这样一个字符串: <span class='hi'>Blah <span class='bye'> is here </span> and here</span> Blah在这里和这里 我想得到第7个字符的字符串中的索引,它不是HTML标记(“I”)的一部分。我知道我可以通过分割和迭代块来实现这一点,但我想知道是否有一个QRegExp可以用来实现这一点。我已经尝试过使用regexp.indexIn()运行很多东西: QRegExp r(

假设我有这样一个字符串:

<span class='hi'>Blah <span class='bye'> is here </span> and here</span>
Blah在这里和这里
我想得到第7个字符的字符串中的索引,它不是HTML标记(“I”)的一部分。我知道我可以通过分割和迭代块来实现这一点,但我想知道是否有一个QRegExp可以用来实现这一点。我已经尝试过使用regexp.indexIn()运行很多东西:

QRegExp r(“[^)”;//匹配索引1
QRegExp r(“[^])”;//匹配索引15(第一个跨度内的)
QRegExp r(“[^)”;//匹配索引1
qregexpr(“^[^.{7}”);//给我-1

是否有一个regexp可以做到这一点(一般)?

rxIt通常被认为不是使用regex解析HTML的好主意,但很多人都这么做。您可以尝试替换它吗

QRegExp rx("<[^>]*>");
QString example = "<span class='hi'>Blah <span class='bye'> is here </span> and here</span>";
example.replace(rx, "");

是的,我意识到这并不理想,但与解析到DOM或类似的东西相比,它的计算工作量要少得多(或者是吗?).问题是我想在一个特定的点插入一个跨度,所以我们必须把所有移除的跨度放回去。所以我希望把regexp转换成索引,这样我就可以在那个点插入一个跨度。我也可以用一个循环来做。
QRegExp rx("<[^>]*>");
QString example = "<span class='hi'>Blah <span class='bye'> is here </span> and here</span>";
example.replace(rx, "");
example.at(7);