QRegExp For QSortFilterProxyModel查找Lis中的所有项目

2024-10-03 17:26:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我在使用PyQt,并被困在使用带有QSortFilterProxyModel的setFilterRegExp()上。源模型输出整数1-30,QSFPM将过滤1-30,只在提供的列表中留下数字。在

proxy.setFilterRegExp(QRegExp('^%s{1,1}%' % sourceModel.wantedNumbersList()))

如果手动输入所需的数字:

^{pr2}$

两者都会导致[1,2,3,4,5,8,9]被留下。结果中没有留下所需的数字>;=10,并且由于某种原因包含了1。在

也尝试过:

proxy.setFilterRegExp(RegExp('^[2|3|4|15]{1,1}$')))

…给出了[1,2,3,4,5],即将所需的数字15解释为1&5。在

我认为应该从每个匹配的文档中找到所有匹配项。在

多谢


Tags: 模型gt列表数字整数手动pyqtproxy
1条回答
网友
1楼 · 发布于 2024-10-03 17:26:38

问题是字符类将其内部的字符视为单个字符,除非使用范围。那么,什么:

[2, 3, 4, 5, 8, 9, 10, 18, 19]

将匹配的是:2,3,(再次),[…],19,(再次),1(再次),等等

regex必须看起来像是:

^{pr2}$

或尽量缩短:

proxy.setFilterRegExp(QRegExp('^([234589]|1[089])$'))

我想您必须更改sourceModel.wantedNumbersList()的显示方式(一些字符串操作),或者手动输入它。在

如果您是通过字符串操作来实现的,我建议去掉方括号,用管道|替换逗号后跟空格,然后使用'^(%s)$'作为regex。在

相关问题 更多 >