我想用" OF"替换单词OF的实例。我只希望这能用于完整的单词。所以不是L_OF,DOF,OFZ,DOFD,OF_L等。
除最终字符串外,我的代码在下面工作。
它返回:
("OF"*OF + 2)
...而不是:
("OF"*"OF" + 2)
我怎样才能让它在那个上面工作?
with stg as
(
select '(ofof+ol)' str from dual union all
select '(oof+ol+of)' from dual union all
select '(*of + 2)' from dual union all
select '(of*of + 2)' from dual
)
select str,
regexp_replace(upper(str), '(\W|^)(OF)(\W|$)', '\1"OF"\3') as str2
from stg
答案 0 :(得分:3)
这是一种方法 - 使用递归查询(需要Oracle 11.2或更高版本)。不要指望它快。
{{1}}
答案 1 :(得分:0)
评论太长了。我不知道解决方案,但我确实理解了这个问题。使用$eng = array('A', 'B','C'); //etc...
$hin = array('अ','ब','क'); //etc...
$result = str_replace($eng, $hin, $mystring);
可以更轻松地看到它,但'of of'
则不会。
问题是定义第一个单词的字符不用于定义第二个单词。正则表达式似乎需要一个特殊的字符,如" ^"表示"前一场比赛后的第一个角色"。我不知道是否存在。