给出一个https://xyz.abc.yahoo.com/issues/80483987/tasks/1
之类的网址
如何编写SQL查询以用其80483987
的整数ID替换/提取类似的网址
使用REGEXP_REPLACE(mystr, r'[^\d]+', ' ')
给我80483987 1
最后的1
是个问题。
答案 0 :(得分:1)
两次应用'Meta.fields' contains fields that are not defined on this FilterSet: is_active
:
REGEXP_REPLACE
说明
内部调用删除所有前导非数字,外部调用删除ID后的后缀。 REGEXP_REPLACE(REGEXP_REPLACE(mystr, r'^[^\d]+', ''), r'/.*$', '')
和^
是所谓的锚点,不代表字符,而是“测试字符串的开始/结尾”的抽象(0长度)概念。
这将适用于所有常见的正则表达式样式和引擎。
解决方案取决于构成URL中位置段的数字ID。
请注意,该方法很脆弱:例如带有端口号的网址将失败。
答案 1 :(得分:1)
您可以简单地REGEXP_EXTRACT
子字符串后的数字/issues/
:
REGEXP_EXTRACT(mystr, r'/issues/([0-9]+)')
请参见regex demo。
/issues/
将被匹配,([0-9]+)
将捕获 1个或更多数字进入捕获组#1,这就是REGEXP_EXTRACT
返回的值。 / p>