我有一个字符串,我需要在OF之前和之后设置单词之间的空格。但是如果它在结尾处关闭那么它应该保持原样。正确地纠正我的表达式或者是否有更好的写法。
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'
答案 0 :(得分:1)
以下正则表达式将匹配" off"在句末,或者#34;"任何地方。
Select REGEXP_REPLACE(spinoff,'(off$)|(of)','\1 \2 ') form dual;
此替代方案会尝试确保如果单词以"结束,则不会添加尾随空格:
Select REGEXP_REPLACE(spinoff,'(off$)|(of)([^$])','\1 \2 \3') form dual;
答案 1 :(得分:1)
这看起来像你想要的 - 只有在of
以外的f
之后至少有一个字符才能替换:
REGEXP_REPLACE(spinoff, '(\w+)(of)(f*[^f].*)$', '\1 \2 \3')