要在数据库中执行此操作:
select regexp_replace ( your_string , '([^[:space]]*) (.*)_(.*)' , '1_3') as new_stringfrom your_table
不幸的是,Oracle在它的正则表达式实现中没有任何语法来强制延迟(非贪婪)。这就是为什么我的原始’(。*)’包括
x3A:它匹配到最后一个空格,并带有下划线。但是,否定语法会将字符串隔离到第一个空格。
“ W后面的’_’丢失了。还有机会得到吗?”
您可以随时格式化替换字符串。最简单的方法是做我所做的事情,并对两个匹配模式之间的下划线进行硬编码。另外,您也可以使其本身成为搜索模式,并将其包含在替换字符串中(尽管您更喜欢这样做,以便进行更复杂的搜索)。
Oracle在10g中引入了正则表达式。这些功能在文档中介绍。regex实现是POSIX兼容的,因此它缺少您在Perl中可能遇到的某些功能。Regex支持在SQL参考的附录中有详细说明。
至于教程,我得到了奥莱利(O’Reilly)口袋书的精装本。我在《 Open World 2003》上获得了副本,但该电子书的定价合理。
在这里买。Anotgher的良好起点是
cdOTN论坛上的一系列主题:从此处开始阅读。



