我正在尝试用不同的表达式替换正则表达式,这取决于行的宽度和框的宽度。
这是我的代码:
//mangledText is my text that I've searching on it
//rx is regular expression
QRegExp rx("<lms([^<]*)/>");
while ((pos = rx.indexIn(mangledText)) != -1){
for (int j = 0; j < tempLayout->lineCount(); j++){
QTextLine tl = tempLayout->lineAt(j);
//here is width of each line
int naturalTextWidth = tl.naturalTextWidth();
//rect width is maximum width of box
if (naturalTextWidth < rectWidth)
mangledText.replace(pos, rx.matchedLength(), "replace Text");
else
mangledText.replace(pos, rx.matchedLength(), "\n replace Text");
}
}
mangledText.replace('\n', QChar::LineSeparator);
如果该行上的文字不在框中,我想用“\ n替换文本”替换正则表达式。否则我用“替换文字”替换它。问题是它总会将它转移到下一行。因为rectWidth
小于naturalTextWidth
。但我想检查每个正则表达式来替换。
更新:
例如 :
111111111111111111111111111 <lms8><lms3><lms2>
显示:
111111111111111111111111111
<lms8>
<lms3>
<lms2>
我想要这个:
111111111111111111111111111
<lms8><lms3><lms2>
有什么建议吗?
答案 0 :(得分:0)
试试这个。
(.[^<]*)(<lms.*>)
替换为以下语法。
$1\n$2
结果将是
111111111111111111111111111
<lms8><lms3><lms2>