SPARQL中的正则表达式:为什么[[:alnum:]]不返回匹配项?

时间:2016-08-15 04:50:27

标签: regex sparql wikidata

我想找到与特定网站相对应的维基数据资源。这是我的查询

SELECT DISTINCT ?resource ?instanceOfLabel ?website
WHERE
{
    ?resource wdt:P856 ?website.
        FILTER (REGEX(str(?website), 'http(s)?://(\\w.)?smh.com.au/$')) .
  }           
} 

(链接here) 哪个没有返回任何结果。这不是我期望的,因为

SELECT DISTINCT ?resource ?instanceOfLabel ?website
WHERE
{
    ?resource wdt:P856 ?website.
        FILTER (REGEX(str(?website), 'http(s)?://www.smh.com.au/$')) .           
} 

(链接here

1 个答案:

答案 0 :(得分:2)

模式\w(写\\w以逃避\)表示一个字母,但您希望 {{1}我理解的信件。

要匹配三个w,您应该使用

w

但是,使用'http(s)?://(w{3}.)?smh.com.au/$' 时会出现什么问题?

www

如果你想要任何三个字母,请使用

'http(s)?://(www.)?smh.com.au/$'

也许您只想要'http(s)?://(\\w{3}.)?smh.com.au/$' 以上的任何字母?

0

我想,这个答案可以帮到你:How to represent a fix number of repeats in regular expression?