假设我们有以下字符串:
$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
是正确的。
有没有人有建议如何修复它?
答案 0 :(得分:1)
您的正则表达式匹配以$开头的任何内容和当前的迭代编号。 如果您需要使用相同的字符串替换所有这些变量,那么您不需要在那里进行循环,因为您可以这样做:
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;