我的查询有问题。我需要搜索变量,如果有 .
在字符串中,我需要将该特定字符替换为 _
.
我可以替换空点和-
但我在替换点时遇到问题。
BIND(replace(?input,".","_") AS ?output) .
我也试过用
/.
, //.
, \.
, \\.
,基本上任何东西,但结果是一样的。Lexical error. Encountered: "<" <40>, after: "replace"
先感谢您。
最佳答案
用 \\.
转义点.您可能还想使用 STR
转换为字符串:BIND(REPLACE(STR(?input),"\\.","_") AS ?output) .
您还可以使用相同的替换替换所有字符(这里您不需要转义点):BIND(REPLACE(STR(?input),"[. -]","_") AS ?output) .
REPLACE
将正则表达式作为第二个参数,这就是为什么您需要转义第一个参数中的点。在第二个中,不需要转义,因为点在字符类内。
关于SPARQL 将 "."替换为 "_",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37270336/