regex - Oracle Regex_replace 删除模式和以下 3 个字符

标签 regex oracle regexp-replace

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

  • 输入示例(字符串):'1SX8+B0DSUB+B0E0LB+B0FMAB+B0G0KB'
  • 所需输出:'1SX8+B0DSUB+B0FMAB+B0G0KB'

我使用REGEXP_REPLACE操作。 有两种策略来完成该操作:

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

    • 主要思想。

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

这样就删除了模式,好的。 我尝试过添加尽可能多的?在模式之后,但它删除字符串的任何其他部分。

  • 已知左模式 (B0E) 和右模式 (B+) 删除两个模式匹配的位置以及它们之间的内容。
    • 不知道如何在正则表达式中应用这个想法。*
  • 最佳答案

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

    你需要类似的东西

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

    请注意,“加号”必须转义,因为未转义它是一个元字符。

    关于regex - Oracle Regex_replace 删除模式和以下 3 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60508762/

    相关文章:

    Javascript 正则表达式 : match anything up until something (if there it exists)

    html - 正则表达式捕获分隔符之间的字符串并排除它们

    sql - 从字符串 oracle 捕获的特殊字符和字符

    sql - REGEXP_REPLACE 雪花中以特定子字符串开头和结尾的字符串

    Java 正则表达式组 0

    ruby-on-rails - 如何从困惑的用户输入中匹配/提取域名?

    sql - 确定 BLOB 的高度和宽度

    java - Hibernate继承映射: Table per subclass

    oracle - 如何修改列的大小

    javascript - 为什么在正则表达式中以某种方式忽略了 sub 之后的第一个字符?