首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QRegularExpression通配符匹配

QRegularExpression通配符匹配
EN

Stack Overflow用户
提问于 2015-11-13 15:52:48
回答 1查看 5.4K关注 0票数 2

我想在搜索框中为我的应用程序的用户提供通配符匹配。我有一个QTableView,它包含了制造中使用的零件的详细信息,obe列是一个字母数字字段,其中包含一些"-“。Id希望用户能够将"123*“输入到搜索框中,以隐藏不以"123”开头的所有部分。与"*678“、"*66*88*”等类似,即搜索字符串中的多个通配符。

我查看了QRegularExpression文档,并在“QRegExp用户备注”一节中看到了这一点:

在QRegularExpression中没有等效的通配符匹配。然而,将通配符语法中的正则表达式重写为与Perl兼容的正则表达式是一项非常容易的任务,因为QRegExp支持的通配符语法非常简单。

您能告诉我如何“非常容易”地将"*88*99*“字符串重写为正则表达式吗?

我应该说,我的一些用户是技术人员,他们将欣赏在搜索字段中使用regexp的能力,但大多数用户不是,我想给他们一个简单的通配符选项(因为我是一个善良的程序员:)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-13 17:52:16

我将研究如何将QRegExpsetPatternSyntax(QRegExp::Wildcard)结合使用。

http://doc.qt.io/qt-5/qregexp.html#PatternSyntax-enum

QRegExp::Wildcard 1--这提供了一个简单的模式匹配语法,类似于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/

希望这能有所帮助。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33696678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档