python - 匹配特定字符之前和之后的所有数字,不包括字符
问题描述
我在 SQL Alchemy 中构建了两个混合表达式,我想在其中选择 i) 之前的所有数字和 ii) 字符串中连字符之后的所有数字。
给定字符串6-12(1)
我想要输出6
和12
分别。
按照这个答案,我想我需要r"(\d+)-"
i) 所以:
@digits_before.expression
def digits_before(cls):
return func.regexp_substr(cls.string_field, r"(\d+)-")
但是,这将返回6-
有问题的记录。
查看生成的 SQL 正则表达式字符串被简化为'(d+)-'
- 这可能是为什么?
我需要使用的正确的两个正则表达式字符串是什么?
提前致谢。
解决方案
似乎这个正则表达式会捕获这两个数字:
(\d+)-(\d+)
这仅获取第一个数字,但验证是否有第二个:
(\d+)-\d+
反之亦然:
\d+-(\d+)
推荐阅读
- python - 这些 `.` 属性绑定在 `functools.partial` 的实现中是必需的吗?
- ruby - 如何编写具有多种可能结果的场景
- azure - Azure Function 无法加载 ApplicationInsights 程序集
- asp.net - 将旧的 ASP url 重定向到新的 Wordpress 页面
- python - 无法使用 XPath 从网页获取价格
- python - 为什么调整模态 Qt 对话框的大小使其不再停留在 ctwm 窗口管理器中其父级的顶部?
- python - 使用 lambda 调用带有参数但传递索引而不是项的函数
- google-apps-script - 如何将 drive.file 范围用于独立的谷歌应用程序脚本
- linux - 当我在 Windows 中编辑代码但在 Linux 中构建和运行代码时如何使用 git 进行版本控制(使用 pycharm)
- python - 为什么 numpy.cumsum 的最后一个条目不一定等于 numpy.sum