1

甲骨文版本:11.2

我是使用正则表达式的新手,需要一些帮助来提出正确的 REGEXP_REPLACE 来满足我们下面解释的要求。

要求:删除字符串中长度为 1 的字母标记之间的空格。

示例 1:

"The I B M Corporation N Y US" 

...应该转换为:

"The IBM Corporation NY US"

示例 2:

"The P N CD FUND of J P R M"

...应该转换为:

"The PN CD FUND of JPRM"
4

2 回答 2

0

这似乎适用于您的示例:

SELECT regexp_replace('The I B M Corporation N Y US', '([[:alpha:]]{2} [[:alpha:]]{1,1}) | ([[:alpha:]]{1,1})( [[:alpha:]]{2})| ([[:alpha:]]{1,1}$)| ([[:alpha:]]{1,1}) ', '\1\2\3\4\5') as eg_1,
       regexp_replace('The P N CD FUND of J P R M', '([[:alpha:]]{2} [[:alpha:]]{1,1}) | ([[:alpha:]]{1,1})( [[:alpha:]]{2})| ([[:alpha:]]{1,1}$)| ([[:alpha:]]{1,1}) ', '\1\2\3\4\5') as eg_2
  FROM dual;

我用这个页面来帮助:regexp_replace

我希望它可以帮助你!

于 2015-11-05T10:30:04.010 回答
0

可悲的是,我不知道 Oracle 正则表达式的语法,但是如果您有能力将正则表达式转换为另一个,那么如果在 C# 中与 Regex.Replace() 方法函数一起使用,那么这个可以做您想做的事情

(?<=\s\w)\s(?!\w{2,})
于 2015-11-05T15:50:08.693 回答