1

我有一个字符串,我需要在 OF 之前和之后的单词之间设置空格。但是如果它最后是 OFF,那么它应该保持原样。请纠正我的表达方式或者如果有更好的写作方法。

PRINCEOFPERSIA ==> PRINCE OF PERSIA
PRINCOFFINLAND ==> PRINCE OF FINLAND
Blowoff ==> Blowoff
Spinoff ==> spinoff

I have written this exp.
Select REGEXP_REPLACE(spinoff,'(\w*)(off?)(.*)$','\1 \2 \3') from dual;
but it breaks it as 'spin off'
4

2 回答 2

1

以下正则表达式将匹配句子末尾的“off”或任何地方的“of”。

Select REGEXP_REPLACE(spinoff,'(off$)|(of)','\1 \2 ') form dual;

如果单词以“of”结尾,则此替代方法会尝试确保不添加尾随空格:

Select REGEXP_REPLACE(spinoff,'(off$)|(of)([^$])','\1 \2 \3') form dual;
于 2013-04-25T22:37:02.057 回答
1

of这看起来像您想要的 - 仅当在以下之外至少有 1 个字符时才替换f

 REGEXP_REPLACE(spinoff, '(\w+)(of)(f*[^f].*)$', '\1 \2 \3')
于 2013-04-25T22:51:51.777 回答