那如果不是怎么去掉前面的一个或多个符号?
时间: 2024-02-24 20:56:11 浏览: 134
如果您想要删除每一行开头的一个或多个符号,可以使用 `QString` 类的 `remove()` 方法。以下是一个示例:
```cpp
QString str = "你好\n123 test\nabc def\n测试 123";
QStringList lines = str.split("\n");
QRegularExpression re("(^[^\\p{Han}\\d\\p{L}]*)");
foreach (QString line, lines) {
QRegularExpressionMatch match = re.match(line);
if (match.hasMatch()) {
QString prefix = match.captured(1);
line.remove(0, prefix.length());
}
// 输出处理后的行
qDebug() << "Processed line: " << line;
}
```
在上面的例子中,我们使用了一个修改后的正则表达式 `(^[^\p{Han}\d\p{L}]*)`,它能够匹配到行开头的一个或多个非汉字数字或英语字符。通过调用 `QRegularExpressionMatch` 对象的 `captured(1)` 方法可以获取到匹配到的前缀字符串。最后,我们调用 `QString` 对象的 `remove()` 方法,将前缀字符串从行中删除,从而得到处理后的字符串。
注意,这里使用了 `[^...]` 表示匹配不属于中括号内的任意字符。同时,我们使用了 `*` 表示匹配前缀字符串的任意数量的字符。
阅读全文