sparql 正则表达式引号和破折号

sparql regex quotation marks and dash

我有一个像 "10-16.7" 这样的文字字符串。我想过滤它并取第一个数字。在此示例中,我只想过滤数字 10 .

我认为这是正确的正则表达式:(["'])(.*-*)-.* 但是当我在查询中尝试它时,它无法识别 ["'] 模式。 所以我找到了这个 但是当我尝试 FILTER regex(?mystring, "(\")(.*-*)-.*") } 时,它没有给出错误,但也没有捕获到任何东西。 (我的数据集包含“50-58”、“9.4-13”、“72-85”等值)

如果你有一个数字后跟一个破折号然后是任何东西,我会使用下面的正则表达式(假设你不需要担心数字是否有效,因为它匹配像 "00323..23....3.-2" 这样的字符串,例如):

^([0-9.]+)-.*

我假设引号实际上不是字符串的一部分。如果是,只需添加 \"^\"([0-9.]+)-.*

要提取数字,您需要将它 BIND 到一个变量,如下所示:

FILTER(REGEX(?test, "^[0-9.]+-"))
BIND(REPLACE(?mystring, "^([0-9.]+)-.*", "") AS ?number)

这里我通过用匹配数字的第一个捕获组 (</code>) 替换字符串来获取数字,并将结果绑定到名为 <code>?number.[=18= 的变量]