我有一個像「10-16.7」這樣的字符串。我想過濾它,並採取第一個號碼。在這個例子中,我只想過濾數字10。sparql正則表達式引號和短劃線
我認爲這是正確的正則表達式:(["'])(.*-*)-.*
但是當我嘗試在我的查詢它不承認[「']模式 所以我發現這個 但是當我嘗試FILTER regex(?mystring, "(\")(.*-*)-.*") }
它沒有。 (我的數據集包含「50-58」,「9.4-13」,「72-85」等數值)
我有一個像「10-16.7」這樣的字符串。我想過濾它,並採取第一個號碼。在這個例子中,我只想過濾數字10。sparql正則表達式引號和短劃線
我認爲這是正確的正則表達式:(["'])(.*-*)-.*
但是當我嘗試在我的查詢它不承認[「']模式 所以我發現這個 但是當我嘗試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.]+)-.*", "$1") AS ?number)
在這裏,我通過與第一捕獲替換字符串獲得數組($1
),它與數字匹配,並將結果綁定到名爲?number
的變量。
如果它是一個文字字符串,那麼引號可能不是它的一部分。 –
實際上,如果我嘗試使用正則表達式(?mystring,「(。* - *) - 。*」)}它會捕獲整個字符串。 – linous