使用 Oracle 正則運算式,特別是regexp_substr和替換函式,我試圖找到一種方法來替換與模式匹配的字串。為了更好地解釋,這里有一個示例資料。
<p>Hello $(KNOWN_AS),</p>
<p>Today is your lucky day. Being your birthday on $(DATE_OF_BIRTH), you have just won $1,000,000.00. To claim, go to https://www.example.com/$(KNOWN_AS),</p>
<p>Regards,<br />
Administrator</p>
我想要做的是將與 $(?) 匹配的所有字串替換為 <xsl:value-of select="?"/>。我嘗試了以下方法,但它只替換了第一次出現。
with t1 as ( select '<p>Hello $(KNOWN_AS),</p> <p>Today is your lucky day. Being your birthday on $(DATE_OF_BIRTH), you have just won $1,000,000.00. To claim, go to https://www.example.com/$(KNOWN_AS),</p> <p>Regards,<br /> Administrator</p>' h
from dual
)
select replace ( h, r, replace(replace( r,'$(','<xsl:value-of select="' ),')','"/>') ) n
from ( select h, regexp_substr( h, '\$\((.*?)\)') r
from t1 )
結果:
<p>Hello <xsl:value-of select="KNOWN_AS"/>,</p> <p>Today is your lucky day. Being your birthday on $(DATE_OF_BIRTH), you have just won $1,000,000.00. To claim, go to https://www.example.com/<xsl:value-of select="KNOWN_AS"/>,</p> <p>Regards,<br /> Administrator</p>
感謝有關如何正確執行此操作的任何建議。
uj5u.com熱心網友回復:
您可以簡單地使用regexp_replace
:
select regexp_replace(h, '\$\(([^()]*)\)', '<xsl:value-of select="\1"/>') as N from t1
請參閱DB fiddle。
詳情:
\$\(
-$(
字串([^()]*)
- 第 1 組(\1
指此組值):除(
and之外的任何零個或多個字符)
\)
- 一個)
字符。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/506879.html
標籤:正则表达式 甲骨文 代替 正则表达式-substr