取消
顯示的結果
而不是尋找
你的意思是:

如何製作的反向引用在regexp_replace repl磚SQL字符串正常工作?

《暮光之城》
新的貢獻者三世

這兩個工作在火花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語法在磚正常工作嗎?

2回答2

User16764241763
尊敬的貢獻者

你好@Stephen Wilcoxon

你能分享火花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 '工作正常。

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map