You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SPARQL使用正则提取字符串最后一个下划线后内容适配Jena Fuseki

问题原因

你原来的写法存在两处核心错误:

  • STRAFTER函数的第二个参数要求是普通字符串,不能直接传入正则匹配逻辑,且regex()函数本身返回的是布尔值(匹配成功/失败),而非匹配到的字符串内容
  • 正则写法语法不完整,缺少引号、闭合括号,也不符合SPARQL函数的调用规范

正确实现方案

SPARQL 1.1原生支持REPLACE正则替换函数,你可以直接用正则把「字符串开头到最后一个下划线」的所有内容替换为空,剩下的就是你需要的末尾内容,正确写法如下:

BIND(REPLACE(?ng, "^.*_", "") AS ?subj)

效果验证

  • 当?ng取值为"tilastot_teul"时,替换结果为"teul"
  • 当?ng取值为"tilastot_luke_yri_teul"时,替换结果为"teul"
    完全符合你的需求。

备选实现(无需正则)

如果你不想用正则,也可以通过两次字符串反转+截取的逻辑实现,写法如下:

BIND(REVERSE(STRBEFORE(REVERSE(?ng), "_")) AS ?subj)

逻辑是先把字符串反转,截取第一个下划线前的内容,再反转回原顺序,就能得到原字符串最后一个下划线后的内容。

内容的提问来源于stack exchange,提问作者Jaana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 10:45:02