爲什麼我們需要Oracle中正則表達式中的子表達式?正則表達式中的子表達式Oracle
這是Oracle 11g的新功能,我們可以指定我們想要查找的模式中的哪個子表達式。我們可以在REGEXP_SUBSTR
和REGEXP_INSTR
中使用此參數。
下面是從文檔的例子:
SELECT REGEXP_INSTR('1234567890', '(123)(4(56)(78))', 1, 1, 0, 'i', 2)
"REGEXP_INSTR" FROM DUAL;
REGEXP_INSTR
-------------------
4
但它不是我清楚,爲什麼我們真的需要這個參數(在上面的例子中,我們可以只使用4(56)(78)
模式)。有沒有人有現實世界的例子?
我認爲這是獲得該正則表達式模式的特定組。當這個概念被稱爲組時,我不知道爲什麼它被稱爲子表達式。因此,對於這種模式(123)(4(56)(78)),有4組1 = 123,2 = 4,3 = 56和4 = 78每組圓括號決定一個組。我沒有添加它作爲答案,因爲我不記得一個使用的例子,但它是必要的! –
@JorgeCamposyes,是的,這是團體。但在文檔中,他們稱之爲「子表達式」。不知道爲什麼。我幾乎明白爲什麼我們需要它。也許有人可以提供很好的現實世界的例子... – Tatiana
閱讀本教程:http://www.regular-expressions.info/tutorial.html在regepx中分組和捕獲組是非常巨大的話題。 Oracle正則表達式的實現是有限的,例如,您不能在模式本身中使用後退前向引用,但可以在REGEXP_REPLACE中使用。 – krokodilko