2016-08-15 1 views
0

Je veux trouver la ressource Wikidata correspondant à un site web spécifique. Ceci est ma requêteRegex dans SPARQL: pourquoi [[: alnum:]] ne renvoie pas les correspondances?

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

(lien here) qui ne renvoie aucun résultat. Ce n'est pas ce que j'attendais depuis

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

(lien here)

+1

Que voulez-vous est le sens de '(\\ w.)'? Je veux dire qu'est-ce que vous attendez à faire correspondre et comment cela reflète le scénario du site Web? – AKSW

Répondre

2

Motif \w (écrit \\w pour échapper \) signifie une lettre, mais vous vous attendez troisw lettres que j'ai compris.

Pour Assemblez trois w vous devez utiliser

'http(s)?://(w{3}.)?smh.com.au/$' 

Bien, quel est le problème dans l'utilisation www?

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

Si vous voulez les trois lettres utilisent

'http(s)?://(\\w{3}.)?smh.com.au/$' 

Peut-être vous voulez juste plus 0 de toutes les lettres?

'http(s)?://(\\w+.)?smh.com.au/$' 

Je suppose que, cette réponse vous aidera: How to represent a fix number of repeats in regular expression?