如何编写QRegExp正则表达式匹配含一个换行符\n及任意空格的字符串?
匹配仅含一个换行符和任意空格的QRegExp正则表达式
嘿,我来帮你搞定这个正则需求!根据你的要求,我们需要匹配**恰好包含一个换行符\n,其余字符全为空格(任意数量,包括零)**的字符串,对应的QRegExp正则写法如下:
QRegExp regex("^[ ]*\\n[ ]*$");
正则各部分解释
^:锚定字符串的起始位置,确保我们从开头开始匹配[ ]*:匹配零个或多个空格(用方括号包裹空格是为了可读性,你也可以直接写成*,效果完全一致)\\n:在C++字符串中需要转义反斜杠,所以用\\n表示正则里的换行符\n;如果是在Qt的字符串常量里直接写正则模式,这部分对应原生正则的\n[ ]*:匹配换行符之后的零个或多个空格$:锚定字符串的结束位置,确保整个字符串都符合规则,不会混入非空格/非换行的额外字符
匹配验证示例
✅ 符合规则的字符串:
"\n"(仅一个换行符,无空格)" \n"(换行符前有3个空格)"\n "(换行符后有3个空格)" \n "(换行符前后各有2个空格)
❌ 不符合规则的字符串:
""(空字符串,无换行符)" "(仅空格,无换行符)"\n\n"(包含两个换行符)"abc\n"(混入非空格的字母)"\nxyz"(混入非空格的字母)
额外提示
QRegExp默认的RegExp模式配合^和$已经能确保完全匹配整个字符串,不会出现部分匹配的情况;如果你的场景需要PCRE兼容的语法,也可以调用regex.setPatternSyntax(QRegExp::RegExp2),效果一致。
内容的提问来源于stack exchange,提问作者ma13
相关产品推荐
相关产品推荐

