ORACLE REGEXP_SUBSTR匹配方括号之间的数字

时间:2015-05-29 12:41:42

标签: regex oracle

我有一个没有特定格式的VARCHAR列。

以下是一些例子:

afdsbfgf, jbhttp://www.iabvdfbdos.com/view.php?p_id=170405, arcm, cocm, fbus, bv[123545]

当字符串类似'bv [123545]'时,我需要匹配括号之间的子字符串。此子字符串始终为数字。

我尝试过这样:

REGEXP_SUBSTR (my_column, '[^bv\[]+[[:digit:]]+')

但这也与

相匹配
'jbhttp://www.iabvdfbdos.com/view.php?p_id=170405' and returns "_id=170405"

提前致谢

1 个答案:

答案 0 :(得分:1)

假设括号仅在该行中出现一次。它抓住第一个'bv'出现的第一个子组(parens中的部分),然后是左方括号,后跟一个或多个数字,后跟右方括号。方括号将被转义,因为它们在正则表达式引擎中定义了一个字符类。

$arr_tmp = array();
for($i = 0; $i < count($columns); $i++)
{
	$arr_tmp[$columns[$i]] = $row[$columns[$i]]
}
$records []= $arr_tmp;