- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为字符串创建一个小的replaceParam函数,并且希望能够转义替换,例如。克。
select regexp_replace('%ABC# %ABC#','%ABC#', 'XXX')
from dual;
导致
XXX XXX
但是我希望能够逃脱替换,例如。 G。在字符串前面加上\,否则该字符串将被替换。
select regexp_replace('%ABC# \%ABC#','<themagicregexp>', 'XXX')
from dual;
应该导致
XXX \%ABC#
我尝试了不匹配的字符列表,但这不起作用。
select regexp_replace('%ABC#abc\%ABC#','<themagicregexp>', 'XXX')
from dual;
应该导致
XXXabc\%ABC#
此外,因为有人提到了这一点:我不能使用单词边界,因为这也应该有效:
yoyo%ABC#yoyo
我感觉这可以在一个正则表达式中完成,但我只是没有看到它?
最佳答案
如果您没有类似 %ABC#%ABC#
的输入,这应该可以工作
SELECT REGEXP_REPLACE( '%ABC#abc\%ABC#', '((^|[^\])(\\\\)*)%ABC#', '\1XXX' )
FROM DUAL;
这将匹配:
^
或非斜杠字符 [^\]
的开头,后跟任意数量的斜杠字符对,最后是字符 %ABC#
。这将匹配 %ABC#
、\\%ABC#
、\\\\%ABC#
等,但不会匹配 \%ABC#
, \\\%ABC#
, \\\\\%ABC#
其中有一个斜杠转义了 %
字符。替换包括第一个捕获组,因为表达式可以匹配前面的非斜杠字符和斜杠对,并且这些需要保留在输出中。
更新
这有点复杂,但它会重复匹配:
WITH Data ( VALUE ) AS (
SELECT '%ABC#%ABC#' FROM DUAL
)
SELECT ( SELECT LISTAGG(
REGEXP_REPLACE( COLUMN_VALUE, '((^|[^\])(\\\\)*)%ABC#$', '\1XXX' ),
NULL
) WITHIN GROUP ( ORDER BY NULL )
FROM TABLE(
CAST(
MULTISET(
SELECT REGEXP_SUBSTR( d.value, '.*?(%ABC#|$)', 1, LEVEL )
FROM DUAL
CONNECT BY LEVEL < REGEXP_COUNT( d.value, '.*?(%ABC#|$)' )
AS SYS.ODCIVARCHAR2LIST
)
)
) AS Value
FROM Data d;
它使用相关子查询将字符串拆分为以 %ABC#
或字符串结尾结尾的子字符串(这是 TABLE( 中的位) CAST( MULTISET( ) .. ) )
),然后在每个子字符串的末尾执行替换后重新连接这些子字符串。
关于regex - 如何在 Oracle 中转义 regexp_replace?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35364034/
我对正则表达式有疑问。 我想搜索这样的文本 ' A ' - (space, BIG SINGLE CHAR and SPACE) SELECT regexp_replace(' A Text B Te
运行时: select regexp_replace('( (test :Name (x) :Table (y) )','\s+\:Name \(.*?\)',' avner '); 我得到: "(
在 postgres 中,我使用 regexp_replace 清理一些雅虎电子邮件地址。 SELECT regexp_replace(domain,'yahoo\.co[^\.].*','yahoo
我想知道是否有人可以帮助我了解如何使用 Hive 的 regexp_replace 函数来捕获正则表达式中的组并在替换字符串中使用这些组。 我有一个我正在解决的示例问题,涉及日期修改。在此示例中,我的
我想使用 regex_replace 将数字后的数据替换为 ''。 例如: 输入-->输出 MA0244891-D --> MA0244891 MA0244891 --> MA0244891 MA02
我有一个字符串如下 Welcome to the world of the Hackers 我正在尝试替换列出的字符串的出现,即 of,to,the在使用以下查询的整个字符串之间,但如果模式是连续的,
我已经阅读了 Oracle 关于 REGEXP_REPLACE 函数的文档,但它没有按预期工作 这是我得到的: 我的目标:为每组连续数字连接一个字符 我的输入: (1101 + 1102) * 110
我在 Oracle 11.2.0.3.0/Toad for Oracle 11.6.1.6 中使用以下查询: select regexp_replace('000010PARA197427'
我需要替换 key:value 对周围的方括号,类似于以下内容。任何帮助深表感谢! “属性”中的数据如下所示: name: property1 value: [12345667:97764458] *
我想将“Shri_”添加到客户表的 First_name 中,仅适用于开头没有“Mr_”的姓名。 customer表数据如下: 我正在使用下面的脚本,但没有用。 update customers se
我想从 PSU 12.1.0.2.170117 获取 12.1.0.2.170117。模式 ([\d|\.]+) 似乎工作正常:https://regex101.com/r/bDCF0w/1 但是,它
我有一个非常简单的代码: SELECT REGEXP_REPLACE('test_4444','test_([0-9]+)','ok\1'); 它应该导致 ok4444 但结果是 ok1 我缺少什么?
我有一个数据库,其中一列包含数字。 3 个示例值: 111111155522222225553333333555 我需要反转并在每个数字之间加一个点。即上述每个示例的结果将是: 5.5.5.1.1.1
我需要用两个特定符号(@ 和 &)之间的 % 替换所有空格;喜欢以下内容: 'this @ is test &that did not @turn& out well' 应转换为 'this @%
我有这样的字符串:aa/ss/[img]aa/ss/dd[/img][img]aa/ss/dd[/img]aa/ss 我需要将这段 /ss/ 替换为:/WW/ 但仅当它们位于 [img] 标签之间时。
我正在尝试导入一个值包含这样的数据的 JSON 文件 "\"Koslov Git †girish\" Ges" 返回应该像 "Koslov Git †girish Ges" 多余的\"是麻烦 我尝试了
如何用空格替换 1990-2050 中的任何年份? 我可以按如下方式替换任何 4 位数字 select regexp_replace('sdfg 2000', '(\y(\d{4})\y)', '',
在 PostgreSQL 中使用 regexp_replace,我开发了(在 SO 的大量帮助下)匹配前 n 个字符的模式,如果最后一个字符不在我不知道的字符列表中'希望字符串结束于. regexp_
我正在使用 PostgreSQL regexp_replace 函数来转义字符串中的方括号、圆括号和反斜杠,这样我就可以将该字符串用作正则表达式模式本身(还有对该字符串进行的其他操作在使用它之前,但它
我想使用 REGEXP_REPLACE 来清理用 '' 包裹它们的字符串值,我尝试了以下方法: REGEXP_REPLACE("Stacko 'N' verflow",'([A-Z])','\\1')
我是一名优秀的程序员,十分优秀!