我想捕获在单词SAT
的两次出现之间并且不包含SAT
的字符串。到目前为止,我已经找到了这个,但是没有用
QLatin1String(".*SAT([^(SAT)]*)SAT.*")
恐怕
[^(SAT)]*
不能满足我的要求,即查找的字符串不是SAT
。也许我进行捕获的方法不好:QRegExp rx(pat);
int p = 0;
QString cap = QString::null;
if((p = rx.indexIn(str, p)) != -1)
cap = rx.cap(1).trimmed();
最佳答案
试试这个:
(?<=SAT)(.+?)(?=SAT)
它的实际作用是对
SAT
进行回顾和展望。如果要测试每个字符串并将整个字符串用作示例,则只需使用此修改后的版本:
^(?<=SAT)(.+?)(?=SAT)$
顺便说一句,只是尝试了这一(
SAT([^(SAT)]+)SAT
),它似乎也正在工作。这是一个演示:http://regex101.com/r/fJ4gO5关于c++ - 用正则表达式链捕获不匹配单词的地方,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22250555/