我的正则表达式:(?<=defining\s)[^;]*
应尝试查找var
:
defining var;
some text defining var;
我使用一些在线工具测试了正则表达式。不幸的是,由于某种原因,它无法与Qt一起使用。正则表达式有问题还是我应该在代码中的其他地方查找错误?这很奇怪,因为正规表达没有看后工作。
额外: 有点偏离主题,但是因为我已经在写这个问题了:我如何更改我的正则表达式,以便它可以在以下情况下找到包含多个空格的var:
some text defining var;
现在它找到除了一个空格和var。
之外的所有空格答案 0 :(得分:1)
您可以匹配要获取的值左侧的上下文,并将后者捕获到捕获组中:
QRegularExpression regex("defining\\s+([^;]+)");
QRegularExpressionMatch match = regex.match(str);
QString textYouWant = match.captured(1);
此处,defining\\s+([^;]+)
匹配defining
,然后匹配1 +空白字符,然后将除;
以外的1个字符捕获到第1组(您可以使用.captured(1)
访问)。
请参阅this regex demo。
请注意,QRegularExpression是PCRE驱动的,因此您可以使用PCRE \K
运算符来获取匹配中所需的值:
QRegularExpression regex("defining\\s+\\K[^;]+");
^^^
\K
运算符会丢弃目前为止匹配的文本,因此在返回匹配项后,您只能获得与[^;]+
匹配的文本。