Oracle - 正则表达式查找具有特定模式的字符串

问题描述 投票:0回答:1

我想编写一个正则表达式来查找字符串末尾有 chr(10) 和 chr(13) 的所有字符串并将其删除。 这是我想出来的

regexp_replace(description, '['||chr(10)||chr(13)||chr(32)||']*$')

但是一路上我发现了一些如下所示的记录,这些记录不会被上面的正则表达式捕获。

......chr(10) chr(13) chr(32)

所以我尝试了以下方法,但无法使其工作。

regexp_replace(description, '['||chr(10)||chr(13)||']'||'[^['||chr(32)||']]*$')

我发现以下内容不起作用,因为它捕获字符串末尾有 chr(32) 的所有记录。 因为我的要求是删除 chr(10) 和 chr(13)。

regexp_replace(description, '['||chr(10)||chr(13)||chr(32)||']*$')

有人可以帮我找到这个正确的正则表达式吗?

regex oracle special-characters chr regex-replace
1个回答
-1
投票

但是一路上我发现了一些如下所示的记录,这些记录不会被上面的正则表达式捕获。

......chr(10) chr(13) chr(32)

您要更换:

  • 一个或多个 CF 或 LF 字符
    ['||chr(10)||chr(13)||']+
  • 后跟零个或多个空格字符
     *
    (或者,也许是更广泛的空白字符
    \s*
  • 并执行一次或多次
    (<previous regex>)+
  • 锚定在绳子的末端
    $

这给出了:

REGEXP_REPLACE(description, '(['||chr(10)||chr(13)||']+\s*)+$')
© www.soinside.com 2019 - 2024. All rights reserved.