首页 > 解决方案 > 匹配特定字符之前和之后的所有数字,不包括字符

问题描述

我在 SQL Alchemy 中构建了两个混合表达式,我想在其中选择 i) 之前的所有数字和 ii) 字符串中连字符之后的所有数字。

给定字符串6-12(1)我想要输出612分别。

按照这个答案,我想我需要r"(\d+)-"i) 所以:

@digits_before.expression
def digits_before(cls):
    return func.regexp_substr(cls.string_field, r"(\d+)-")

但是,这将返回6-有问题的记录。

查看生成的 SQL 正则表达式字符串被简化为'(d+)-'- 这可能是为什么?

我需要使用的正确的两个正则表达式字符串是什么?

提前致谢。

标签: pythonmysqlregexsqlalchemy

解决方案


似乎这个正则表达式会捕获这两个数字:

(\d+)-(\d+)

这仅获取第一个数字,但验证是否有第二个:

(\d+)-\d+

反之亦然:

\d+-(\d+)

推荐阅读