這兩個工作在火花SQL:
abc regexp_replace(' 1234567890 ', ' ^(? <一> \ \ w) (? < 2 > \ \ w)(? <三> \ \ w) ', ' $ 1 ') regexp_replace (“1234567890 abc”,“^(? <一> \ \ w) (? < 2 > \ \ w)(? <三> \ \ w)”,“$ {1}”)
然而,無論是在磚SQL的工作。我發現這對數字作品backreference但我找不到任何方法命名為反向引用在磚工作。這個問題似乎在repl的一係列regexp_replace周圍。
abc regexp_replace(' 1234567890 ', ' ^(? <一> \ \ w) (? < 2 > \ \ w)(? <三> \ \ w) ', ' \ $ 1 ')
然而,當用於正則表達式本身,它隻能沒有反斜杠:
選擇“aabc ' RLIKE ^ \ \ w 1美元的美元,‘aabc RLIKE”^ \ \ w \ $ 1 ' escdollar——美元= true和escdollar = false選擇‘aabc RLIKE”^(? <一> \ \ w) ${1}’的名字——同樣適用
有人知道的辦法叫反向引用在repl字符串?或者更好的是,讓火花SQL語法在磚正常工作嗎?
我道歉,我顯然忘記了……
在火花(但不是磚),這兩種:
abc regexp_replace(' 1234567890 ', ' ^(? <一> \ \ w) (? < 2 > \ \ w)(? <三> \ \ w) ', ' $ 1 ') regexp_replace (“1234567890 abc”,“^(? <一> \ \ w) (? < 2 > \ \ w)(? <三> \ \ w)”,“$ {1}”)
結果:
14567890美國廣播公司
總的來說,我發現磚工作至少以及火花,但在這種情況下不能正常工作。
在磚,你必須使用這些變化(不是標準火花):
abc regexp_replace(' 1234567890 ', ' ^(? <一> \ \ w) (? < 2 > \ \ w)(? <三> \ \ w) ', ' \ $ 1 ') regexp_replace (“1234567890 abc”,“^(? <一> \ \ w) (? < 2 > \ \ w)(? <三> \ \ w)”,“美元\ \ {1}”)
(注意,名叫捕獲需要逃離美元和{)
在進一步測試,#美元{名稱}不工作RLIKE畢竟(至少在磚-沒有火花測試)。例如:
regexp_extract (“aabc”、“^ (\ \ w) $ 1 ', 0)
返回“a”(不是“aa”),但“^ \ \ w \ 1 '工作正常。