pattern = '(ns:m\.[^ ]+ )|(ns:g\.[^ ]+ )'
query = "PREFIX ns: <http://rdf.freebase.com/ns/>\nSELECT DISTINCT ?x\nWHERE {\nFILTER (?x != ns:m.0pz91)\nFILTER (!isLiteral(?x) OR lang(?x) = '' OR langMatches(lang(?x), 'en'))\nns:m.0pz91 ns:film.producer.film ?x .\n?x ns:film.film.genre ?c .\n?c ns:film.film_genre.films_in_this_genre ns:g.11b5lzm6b0 . \n}"
entities = re.findall(pattern, query)
내가 뭘하려고 즉 내 쿼리의 모든 유리 염기 실체를 찾는 것입니다, 'ns:g.11b5lzm6b0'
그리고 'ns:m.0pz91'
내 예이다. 그러나 내가 작성한 코드 [('ns:m.0pz91)\nFILTER ', ''), ('ns:m.0pz91 ', ''), ('', 'ns:g.11b5lzm6b0 ')]
는 ['ns:m.0pz91 ', 'ns:g.11b5lzm6b0 ']
.
나는 즉, 2 개의 별도 정규식을 사용하여 문제를 해결, ns:m\.[^ ]+
그리고 ns:g\.[^ ]+
내가 직접 사용할 수없는 이유를 난 아직도 이해하지 않는다, 그러나, (ns:m\.[^ ]+ )|(ns:g\.[^ ]+ )
일치 ns:m\.[^ ]+
또는 ns:g\.[^ ]+
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다