Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SQLalchemy中的过滤正则表达式_Python_Regex_Postgresql_Sqlalchemy - Fatal编程技术网

Python SQLalchemy中的过滤正则表达式

Python SQLalchemy中的过滤正则表达式,python,regex,postgresql,sqlalchemy,Python,Regex,Postgresql,Sqlalchemy,我有两个表users和users\u address,我正在尝试获取名称或地址不完整的所有用户 除了与邮政路由相关的过滤器外,所有功能都运行良好,我在该过滤器中搜索以下模式: (一些数字)+(一个空格)+(一些字母或空格) 这是我的密码: ua = aliased(UserAddress) # Main query, incomplete users or addresses query1 = DBSession.query( User.id,

我有两个表
users
users\u address
,我正在尝试获取名称或地址不完整的所有用户

除了与邮政路由相关的过滤器外,所有功能都运行良好,我在该过滤器中搜索以下模式:

(一些数字)+(一个空格)+(一些字母或空格)

这是我的密码:

    ua = aliased(UserAddress)

    # Main query, incomplete users or addresses
    query1 = DBSession.query(
        User.id,
        User.member_id,
        User.lastname,
        User.firstname,
        ua.supplemental_address_1,
        ua.supplemental_address_2,
        ua.supplemental_address_3,
        ua.street_address,
        ua.postal_routing,
        ua.country,
    ).distinct()

    query1 = query1.join(ua, User.addresses)

    query1 = query1.filter(
        sa.or_(
            User.lastname == u'',
            User.firstname == u'',
            sa.and_(
                ua.primary == True,
                sa.or_(
                    ua.country == u'',
                    sa.and_(
                        ua.supplemental_address_1 == u'',
                        ua.supplemental_address_2 == u'',
                        ua.supplemental_address_3 == u'',
                        ua.street_address == u'',
                    ),
                    ~ua.postal_routing.op('regexp')('\d*\ ?(\w\s)*'),
                )
            )
        )
    )
但我有一个错误:

ProgrammingError:(psycopg2.ProgrammingError)位于或接近“regexp”的语法错误
第4行:…ress=''或不(用户地址\u 1.postal\u路由regexp'[…

我认为a在调用正则表达式的方式上犯了一个错误,我很确定我的正则表达式本身格式错误:(

有人能帮我吗?

好的,自己回答

正如我在书中看到的, Postgresql中正确的正则表达式调用是
~
因此,正确的语法是:

-
~ua.postal\u routing.op('regexp')('\d*\?(\w\s)*'),

+
~ua.postal_routing.op(“~”)(“^\d+\w+$”),

顺便说一下,我改变了模式

也许有更好的语法,但这一个对我很有用。

不要在标题中添加“(已解决)”。你已经通过接受答案表明了这一点。