我需要用简单的语法从字符串中提取一些数据。语法是这样的:
_IMPORT:[any text] - [HEX number] #[decimal number]
因此我创建了正则表达式,您可以在下面的代码中看到:
//SYNTAX: _IMPORT:%1 - %2 #%3
static const QRegExp matchImportLink("^_IMPORT:(.*?) - ([A-Fa-f0-9]+) #([0-9]+)$");
QRegExp importLink(matchImportLink);
QString qtWtf(importLink.pattern());
const int index = importLink.indexIn(mappingName);
qDebug()<< "Input string: "<<mappingName;
qDebug()<< "Regular expression:"<<qtWtf;
qDebug()<< "Result: "<< index;
出于某种原因,这不起作用,我得到这个输出:
Input string: "_IMPORT:ddd - 92806f0f96a6dea91c37244128f7d00f #0"
Regular expression: "^_IMPORT:(.*?) - ([A-Fa-f0-9]+) #([0-9]+)$"
Result: -1
我什至试图移除锚^
,$
但这没有帮助,也是不受欢迎的。烦人的是,如果我在 regex101.com 中复制输出,则此正则表达式可以完美运行,您可以在此处看到:https ://regex101.com/r/oT6cY3/1
谁能解释这里有什么问题?我是否偶然发现了 Qt 错误?我使用 Qt 5.6。有什么解决方法吗?