正则表达式匹配数值变量名称

Regex matching numerical variable names

假设我们有以下字符串:

 
 

You have received the grade of  in the subject  () in the semester  (). 
Grade date:  
Entered:  

我需要弄清楚如何动态且正确地替换这些变量。假设我们有以下 PL/SQL 伪代码:

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

但是在第一次迭代时 - </code>、<code></code> 变量正在被替换 - 但只有 <code> 是正确的。

有没有人有解决方法的建议?

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

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)||'');
end loop;