gpt4 book ai didi

python - QRegExp 可以进行 MULTILINE 和 DOTALL 匹配吗?

转载 作者:行者123 更新时间:2023-12-01 05:29:18 24 4
gpt4 key购买 nike

最近我一直在开发 PyQt 程序。一开始我使用python re模块来处理正则表达式,但是python字符串和QString之间的转换让我感到困惑。所以我尝试改变QRegExp。

但是,我想使用python re的IGNORECASE、MULTILINE、DOTALL。我找到了 QRegExp.setCaseSensitivity() 来替换 re.I,但我找不到其余两个功能。有人可以帮忙吗?

或者告诉我如何将 QString 转换为 python 字符串?正则表达式模式和数据都是由用户输入的,因此它们的类型都是 QString。

最佳答案

Qt 的 QRegExp 类完全没问题,但是 python 的 re 模块更加灵活。一般来说,字符串处理也是如此 - 如果您需要在 PyQt 程序中进行大量字符串处理,如果可以的话,通常最好在 python 中完成所有操作。

转换 QString 非常容易。在python2中,你只需要这样做:

string = unicode(qstring)

通常不需要将其转换回来:任何需要 QString 的 Qt api 都会被 PyQt 自动从 python 字符串转换。

QString 转换的更通用解决方案是使用 sip module 在全局基础上进行转换。 (无论 PyQt 安装在哪里,它都应该已经可用)。这需要在 PyQt 程序开始时、导入任何 PyQt 模块之前完成,如下所示:

import sip
sip.setapi('QString', 2)

from PyQt4 import QtCore, QtGui

执行此操作后,任何通常返回 QString 的 Qt API 将返回 python unicode 对象。有关此功能的更多信息,请参阅Selecting Incompatible APIs在 PyQt 文档中。

虽然一开始可能需要做更多的工作,但从长远来看,采取这条路线可能是最好的。一方面,如果您需要的话,它将使移植到 python3 变得更容易。对于python3,默认选择版本2 API,因此不需要上面的setapi步骤。

关于python - QRegExp 可以进行 MULTILINE 和 DOTALL 匹配吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20660579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com