Qt正则表达式(?:[Ff]吃[。]?)|(?:[[Ff] eaturing] [。]?)

时间:2013-07-03 18:05:48

标签: regex qt

在Qt项目中,我不得不通过以下分隔符分割QString

  1. 技艺。
  2. 技艺。
  3. 试听
  4. 技艺
  5. 设有
  6. 配。
  7. 设有
  8. 设有
  9. 我最好的尝试是(?: [Ff]eat[.]? )|(?: [[Ff]eaturing][.]?),如

    QRegExp xp("(?: [Ff]eat[.]? )|(?: [[Ff]eaturing][.]? )");
    QString str = "Eminem Feat. Rihanna";
    QStringList list = alist.split(xp);
    

    以上代码行对我不起作用。这是一个简单的RegExp问题。我太困惑了。任何形式的帮助或建议都会很棒!

2 个答案:

答案 0 :(得分:2)

你在正则表达式的第二部分有一个额外的字符类。

尝试使用:

QRegExp xp("(?: [Ff]eat[.]? )|(?: [Ff]eaturing[.]? )");

您可以使用?量词在一个模式中组合它们,并且您不需要最外层的非捕获组。

QRegExp xp(" [Ff]eat(?:uring)?[.]? ");

答案 1 :(得分:1)

尝试这种模式:

(?: [fF]eat(?:uring)?\.? )

或用字边界替换空格

(?:\b[fF]eat(?:uring)?\.?\b)