Oracle Regex_replace 删除一个模式及后面的3个字符
Oracle Regex_replace to delete a pattern and following 3 characters
我正在尝试进行以下操作。我有很多行数据需要编辑以删除字符串的一部分。此字符串包含模式 B0ExxB+,其中 'x' 可以是任何字符或数字。
- 输入示例(字符串):
'1SX8+B0DSUB+B0E0LB+B0FMAB+B0G0KB'
- 期望的输出:
'1SX8+B0DSUB+B0FMAB+B0G0KB'
我用的是REGEXP_REPLACE操作。
有两种策略来完成操作:
已知模式B0E应用更多的正则表达式运算符也选择模式后面的4个字符,然后将它们替换为空。
- 主要思想。
update rx3qtxin xn set cin.cin_value = REGEXP_REPLACE (cin.cin_value, '\SB0E', '') where cin.id = 500228;
删除模式,OK。
我试过添加尽可能多的?在模式之后,但它会删除字符串的任何其他部分。
- 已知左模式(B0E)和右模式(B+)删除两个模式匹配的地方和它们之间的内容。
- 不知道如何在正则表达式中应用这个想法。*
问号是 Unix 中单个字符的占位符 ("wildcard character")。在正则表达式中,对于相同的任务,我们使用点(句点)。问号(在正则表达式中)只是使它适用于可选的子表达式。它不会帮助您完成任务。
你需要这样的东西
regexp_replace(col, 'B0E..B\+')
请注意 "plus sign" 必须进行转义,因为未转义它是一个元字符。
我正在尝试进行以下操作。我有很多行数据需要编辑以删除字符串的一部分。此字符串包含模式 B0ExxB+,其中 'x' 可以是任何字符或数字。
- 输入示例(字符串):
'1SX8+B0DSUB+B0E0LB+B0FMAB+B0G0KB'
- 期望的输出:
'1SX8+B0DSUB+B0FMAB+B0G0KB'
我用的是REGEXP_REPLACE操作。 有两种策略来完成操作:
已知模式B0E应用更多的正则表达式运算符也选择模式后面的4个字符,然后将它们替换为空。
- 主要思想。
update rx3qtxin xn set cin.cin_value = REGEXP_REPLACE (cin.cin_value, '\SB0E', '') where cin.id = 500228;
删除模式,OK。 我试过添加尽可能多的?在模式之后,但它会删除字符串的任何其他部分。
- 已知左模式(B0E)和右模式(B+)删除两个模式匹配的地方和它们之间的内容。
- 不知道如何在正则表达式中应用这个想法。*
问号是 Unix 中单个字符的占位符 ("wildcard character")。在正则表达式中,对于相同的任务,我们使用点(句点)。问号(在正则表达式中)只是使它适用于可选的子表达式。它不会帮助您完成任务。
你需要这样的东西
regexp_replace(col, 'B0E..B\+')
请注意 "plus sign" 必须进行转义,因为未转义它是一个元字符。