Oracle 正则表达式 - 删除字符串中长度为 1 的字母标记之间的空格

Posted

技术标签:

【中文标题】Oracle 正则表达式 - 删除字符串中长度为 1 的字母标记之间的空格【英文标题】:Oracle Regular Expression - Remove space between alphabetic tokens of length 1 within a string 【发布时间】:2016-02-05 15:04:26 【问题描述】:

Oracle 版本: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"

【问题讨论】:

【参考方案1】:

这似乎适用于您的示例:

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

希望对你有帮助!

【讨论】:

【参考方案2】:

遗憾的是,我不知道 Oracle 正则表达式的语法,但如果你有能力将正则表达式翻译成另一个,那么如果在 C# 中与 Regex.Replace() 方法函数一起使用,这个函数就会做你想做的事情

(?<=\s\w)\s(?!\w2,)

【讨论】:

以上是关于Oracle 正则表达式 - 删除字符串中长度为 1 的字母标记之间的空格的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式从组中删除空格

如何通过 Oracle 中的正则表达式从逗号分隔列表中删除重复项,但我不想要重复值? [复制]

2015.3.20 Oracle使用正则表达式

oracle正则表达式问题。有个字符串abca4gf,我想匹配a开头,f结尾的字符串, 我想要的结

使用python正则表达式在字符串中搜索长度为6或更长的特定重复(mnr)

限制正则​​表达式中的字符长度