我想从QString中删除所有包含文本的行并保留数字。
在运行正则表达式之前,我的QString输出如下:
hello
1
world
2
如果我运行
之类的东西QString.remove(QRegExp("(^[a-z]*\\n$)"))
我的QString输出将是:
1
2
答案 0 :(得分:1)
由于QRegExp
没有类似Perl的/m
修饰符,因此您需要使用(^|\n)
和($|\n)
等组。另外,考虑到换行符可能包括回车,我使用
(^|\r?\n)[a-z]*\r?\n(\r?\n|$)
请参阅regex demo
Qt的:
QString t = "hello\n\n1\n\nworld\n\n2";
t.replace(QRegExp("(^|\r?\n)[a-z]*\r?\n(\r?\n|$)"), "\\1");
注意,此代码仅删除仅由小写ASCII字母和后面的换行符组成的行。如果您只需删除所有不是数字的行,请使用QRegExp("(^|\r?\n)[^\\d\n]+\r?\n(\r?\n|$)")
,其中[^\d\n]
匹配任何非数字字符,而不是换行符。