我有串
[[good|12345]] [[bad1 [[bad2 [[bad3 [[bad4 [[bad5 [[good|12345]]
PostgreSQL的REGEXP_REPLACE 'G' 標誌
我需要殺死[[
如果字後還沒有|
。
我做什麼: select regexp_replace('[[good|12345]] [[bad1 [[bad2 [[bad3 [[bad4 [[bad5 [[good|12345]]', '\[\[([^\|]+?(\[\[|\Z))', '\1', 'g')
我得到什麼: [[good|12345]] bad1 [[bad2 bad3 [[bad4 bad5 [[good|12345]]
什麼,我想: [[good|12345]] bad1 bad2 bad3 bad4 bad5 [[good|12345]]
它看起來像我的正則表達式的最後2個符號[[
不存在於正則表達式的下一次迭代
感謝烏爾答案,我應該設置'?='到組的每個成員?這將是之間'差(=一個?| B)'和'(= A |?= b)個' –
負先行'(= \ [\ [|?\ Z)'檢查是否存在'[[ '或者行尾。如果你寫的'(= A |??= B)',你會得到,因爲交替操作錯誤'|'不能量化的(有可能在串1個單位置沒有1個或多個交替操作)。如果寫'(?= A)(?= B)'表達永遠不會匹配爲1,在給定位置相同的字符不能同時'A'和'B'(lookarounds而不消耗執行檢查文字,他們這樣做,同時仍住在同一地方,環視發揮了作用。 –
感謝的人,它可以幫助 –