我想在搜索框中为我的应用程序的用户提供通配符匹配。我有一个QTableView,它包含了制造中使用的零件的详细信息,obe列是一个字母数字字段,其中包含一些"-“。Id希望用户能够将"123*“输入到搜索框中,以隐藏不以"123”开头的所有部分。与"*678“、"*66*88*”等类似,即搜索字符串中的多个通配符。
我查看了QRegularExpression文档,并在“QRegExp用户备注”一节中看到了这一点:
在QRegularExpression中没有等效的通配符匹配。然而,将通配符语法中的正则表达式重写为与Perl兼容的正则表达式是一项非常容易的任务,因为QRegExp支持的通配符语法非常简单。
您能告诉我如何“非常容易”地将"*88*99*“字符串重写为正则表达式吗?
我应该说,我的一些用户是技术人员,他们将欣赏在搜索字段中使用regexp的能力,但大多数用户不是,我想给他们一个简单的通配符选项(因为我是一个善良的程序员:)。
发布于 2015-11-13 17:52:16
我将研究如何将QRegExp与setPatternSyntax(QRegExp::Wildcard)结合使用。
http://doc.qt.io/qt-5/qregexp.html#PatternSyntax-enum
QRegExp::Wildcard1--这提供了一个简单的模式匹配语法,类似于shell(命令解释器)用于“文件全局”的语法。查看通配符匹配。
http://doc.qt.io/qt-5/qregexp.html#wildcard-matching
c任何字符都表示自己,而不是下面提到的字符。因此,c与字符c匹配。?匹配任何单个字符。在完整的regexps中,它与.是相同的。*与任何字符中的零或多个匹配。在完整的regexps中,它与.*是相同的。[...]字符集可以用方括号表示,类似于完整的regexp。在字符类中,与外部一样,反斜杠没有特殊的意义。
让普通的最终用户来处理正则表达式可能要花很多时间。Windows搜索和其他基本搜索功能所支持的文件全局化对于大多数用户来说要容易得多。因此,对于QRegExp::Wildcard,您使用的是正则表达式的一个受限子集,如前所述。
另外,在SQL中,它使用%作为带LIKE关键字的通配符。
如果您想在正则表达式中四处游玩,我建议您尝试一下http://regexr.com/。
希望这能有所帮助。
https://stackoverflow.com/questions/33696678
复制相似问题