Regex Qt正则表达式(?[Ff]eat[.]?)|(?:[[Ff]eaturing][.]?)

Regex Qt正则表达式(?[Ff]eat[.]?)|(?:[[Ff]eaturing][.]?),regex,qt,Regex,Qt,在Qt项目中,我必须用以下分隔符拆分QString 壮举 壮举 壮举 壮举 特色 特色 特色 特色 我最好的尝试是吃东西,就像在 QRegExp xp("(?: [Ff]eat[.]? )|(?: [[Ff]eaturing][.]? )"); QString str = "Eminem Feat. Rihanna"; QStringList list = alist.split(xp); 上面的代码行对我不起作用。这是一个简单的RegExp问题。我只是太糊涂了。任何形式的帮助或建议都会很棒

在Qt项目中,我必须用以下分隔符拆分QString

  • 壮举
  • 壮举
  • 壮举
  • 壮举
  • 特色
  • 特色
  • 特色
  • 特色
  • 我最好的尝试是吃东西,就像在

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

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

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

    尝试使用以下方法:

    QRegExp xp("(?: [Ff]eat[.]? )|(?: [Ff]eaturing[.]? )");
    
    您可以使用
    量词将它们组合在一个模式中,并且不需要最外层的非捕获组

    QRegExp xp(" [Ff]eat(?:uring)?[.]? ");
    
    尝试以下模式:

    (?: [fF]eat(?:uring)?\.? )
    
    或者用单词边界替换空格

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

    如果你想捕捉所有的情况(例如,壮举、壮举和壮举),你可以考虑使用。这比像您使用
    [Ff]
    @Phlucious那样单独手动输入每个字母要简单得多:这很有意义。但是知道如何检查英尺或英尺吗?
    qregexpxp(\\sf(?:ea)?t(?:uring)?[.]?\\s”)是我将如何做的。主要区别在于,您包装了“ea”以使其成为可选的。如果使用Rohit的第一个选项,则只需将其添加为另一个选项或类似于
    QRegExp中的选项((?:\\sfeat[.]?\\s)|(?:\\sfeaturing[.]?\\s)|(?:\\sft[.]?\\s)在Qt的正则表达式示例中使用它。我在
    QRegExp xp(“\\sf(?:ea)?t(?:uring)?[.]?\\s”)
    上尝试过,但它也与fturing匹配!无论如何,我会找到答案的,谢谢你的帮助:)