为什么以下代码不匹配?表达式并不难,在线正则表达式测试器也指出它应该可以工作。我在逃生途中做错什么了吗?
QRegExp rex("(.*?)(\\d+\\.\\d+)_(\\d+\\.\\d+).*?");
QString fileName("tile_10.0000_47.3100_0.1_.dat");
if (rex.indexIn(fileName)>=0) {
// ...
}
QRegExp
不支持惰性量词,因此*?
在这里不起作用。此外,.*?
图案结尾处的不匹配任何文本,可以安全地将其删除。
我建议更换第一.*?
与([^_]*)_
模式(比其他0+字符_
和_
后他们的权利),以获得在第一digits.digits
文本:
rex("([^_]*)_(\\d+\\.\\d+)_(\\d+\\.\\d+)")
或者,如果您需要从字符串的开头匹配数据,请在模式前面加上^
(字符串的开头)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句