我想捕获在单词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/

10-11 15:42