我正在尝试执行以下操作。我有很多行数据需要编辑才能删除字符串的一部分。该字符串包含模式 B0ExxB+,其中“x”可以是任何字符或数字。
- 输入示例(字符串):
'1SX8+B0DSUB+B0E0LB+B0FMAB+B0G0KB'
- 所需输出:
'1SX8+B0DSUB+B0FMAB+B0G0KB'
我使用REGEXP_REPLACE操作。 有两种策略来完成该操作:
已知模式 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/