Oracle Regex_replace 删除一个模式及后面的3个字符

Oracle Regex_replace to delete a pattern and following 3 characters

我正在尝试进行以下操作。我有很多行数据需要编辑以删除字符串的一部分。此字符串包含模式 B0ExxB+,其中 'x' 可以是任何字符或数字。

我用的是REGEXP_REPLACE操作。 有两种策略来完成操作:

  1. 已知模式B0E应用更多的正则表达式运算符也选择模式后面的4个字符,然后将它们替换为空。

    • 主要思想。

    update rx3qtxin xn set cin.cin_value = REGEXP_REPLACE (cin.cin_value, '\SB0E', '') where cin.id = 500228;

删除模式,OK。 我试过添加尽可能多的?在模式之后,但它会删除字符串的任何其他部分。

  1. 已知左模式(B0E)和右模式(B+)删除两个模式匹配的地方和它们之间的内容。
    • 不知道如何在正则表达式中应用这个想法。*

问号是 Unix 中单个字符的占位符 ("wildcard character")。在正则表达式中,对于相同的任务,我们使用点(句点)。问号(在正则表达式中)只是使它适用于可选的子表达式。它不会帮助您完成任务。

你需要这样的东西

regexp_replace(col, 'B0E..B\+') 

请注意 "plus sign" 必须进行转义,因为未转义它是一个元字符。