Regex匹配数字变量名



假设我们有以下字符串:

$6 
$7 
You have received the grade of $3 in the subject $1 ($10) in the semester $2 ($11). 
Grade date: $4 
Entered: $5 

我需要弄清楚如何动态、可靠地替换这些变量。假设我们有下面的PL/SQL伪代码:

for i in 1..X loop
  l_str := regexp_replace(l_str, '$'||to_char(i), l_replace(i));
end loop;

但当涉及到第一次迭代时——$1$10$11变量被替换——但只有$1是正确的。

有人建议如何修复它吗?

您的regexp匹配以$和当前迭代号开头的任何内容。如果你需要用相同的字符串替换所有这些变量,你不需要一个循环,因为你可以简单地这样做:

l_str := regexp_replace(l_str, '$[0-9]+','SOME_STRING');

如果你需要不同的替代品,你可以用类似的方法:

for i in 1..X loop
  l_str := regexp_replace(l_str, '($'||to_char(i)||')([^0-9]+|$)',l_replace(i)||'2');
end loop;

最新更新