regex - Oracle 正则表达式尾随空格

标签 regex oracle

如何在 sql 语句中使用 Oracle regexp 仅删除尾随空格以及 chr(10) 和 chr(13)?

示例:

with txt as (select chr(10)||chr(10)||'  Hey Bob   '||chr(10)||chr(13) a  from dual)
select a
      ,regexp_replace(a,chr(10)||'+|'||chr(13)||'+|'||chr(32)||'+$','')
      ,regexp_replace(a,'['||chr(10)||'+'||chr(13)||'+'||chr(32)||'+]$','')
  from txt;

期望的结果:

'  Hey Bob'
1. Leading and non-trailing spaces remain
2. Trailing spaces and eol characters removed

最佳答案

最好使用[[:space:]]来捕获所有空白:

regexp_replace(a, '[[:space:]]+$', '')

但是,如果您明确只需要换行符 (10)、回车符 (13) 和空格 (32) 字符,您可以这样做:

regexp_replace(a, '[' || chr(10) || chr(13) || ' ]+$', '')
--                                              ^-- space character.

关于regex - Oracle 正则表达式尾随空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27385994/

相关文章:

java - Oracle 1.8 CachedRowSet.populate 错误,其中从双选择 systimestamp

java - 重新启动数据库后,Websphere 应用程序服务器 5.1 数据源不再有效

c# - 验证数字到小数点后两位的正则表达式

r - 在 dplyr select 中使用 perl=TRUE regex

javascript - 如何在 javascript 的替换中循环遍历正则表达式的匹配项?

oracle - golang中使用gorm连接Oracle数据库

java - hibernate什么时候关闭游标?

regex - 如何在Elasticsearch中使用正则表达式搜索 “\…\”

regex - 如何从 MAC 地址列表中删除冒号?

mysql - 是否有任何 mysql/Oracle 函数可以提供增量编号。基于另一列相似值的一列?