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 中的正则表达式从逗号分隔列表中删除重复项,但我不想要重复值? [复制]
oracle正则表达式问题。有个字符串abca4gf,我想匹配a开头,f结尾的字符串, 我想要的结