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= 的变量]
我有一个像 "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= 的变量]