我用这段文字多行:
insert into table1(IDEORGVENSUB, IDEORGSUB, IDEVENDEDOR, IDEORGVEN_SUP, FECINI, FECFIN, STSACTIVO, USUCREACION, FECCREACION, FECMODIF, USUMODIF, IDEFAMILIA, IDEPRODFAMILIA, IDETIPANTICIPO, VALANTICIPO, STSCADUCO)
values (3960, 302, 6572, 3246, to_date('01-01-2015', 'dd-mm-yyyy'), null, 1, 'MCMSMCMS', to_date('01-01-2001', 'dd-mm-yyyy'), to_date('01-01-2001', 'dd-mm-yyyy'), 'MCMSMCMS', null, null, null, null, 0, 302, 'ASESOR X', 115, 234, 1, 'MCMSMCMS', to_date('01-01-2001', 'dd-mm-yyyy'), null, to_date('01-01-2001', 'dd-mm-yyyy'), 'MCMSMCMS', 47, 3, 1);
最终文本应为:
insert into table1 (IDEORGVENSUB, IDEORGSUB, IDEVENDEDOR, IDEORGVEN_SUP, FECINI, FECFIN, STSACTIVO, USUCREACION, FECCREACION, FECMODIF, USUMODIF, IDEFAMILIA, IDEPRODFAMILIA, IDETIPANTICIPO, VALANTICIPO, STSCADUCO)
values (3960, 302, 6572, 3246, to_date('01-01-2015', 'dd-mm-yyyy'), null, 1, 'MCMSMCMS', to_date('01-01-2001', 'dd-mm-yyyy'), to_date('01-01-2001', 'dd-mm-yyyy'), 'MCMSMCMS', null, null, null, null, 0);
我需要用')替换这部分(数字302改变);'获得最终文本:
, 302, 'ASESOR X', 115, 234, 1, 'MCMSMCMS', to_date('01-01-2001', 'dd-mm-yyyy'), null, to_date('01-01-2001', 'dd-mm-yyyy'), 'MCMSMCMS', 47, 3, 1);
我在Notepad ++中使用这个正则表达式替换为caracters“);”并获得最终文本但不起作用......
, [268|269|270|271|272|273|274|275|276|277|291|293|296|299|301|302|303|305|266|267|308|309|310|185|186|231|232|233|235|236|237|238|239|279|280|184|265|278|281|282|283|284|285|286|287|288|289|290|292|294|295|297|298|300|304|234|240|241|242|307|312|264|311|313], '+[\w ',()-:]*;$
我使用了另一个正则表达式,但仅适用于一个数字:
, 265, '+[\w ',()-:]*;$
请帮帮我
答案 0 :(得分:3)
只需将您的模式从括号(字符类inregex)更改为括号,以便对可能的替代方法进行分组:
, (268|269|270|271|272|273|274|275|276|277|291|293|296|299|301|302|303|305|266|267|308|309|310|185|186|231|232|233|235|236|237|238|239|279|280|184|265|278|281|282|283|284|285|286|287|288|289|290|292|294|295|297|298|300|304|234|240|241|242|307|312|264|311|313), '+[\w ',()-:]*;$
通过制定范围可以简化它。编辑...
最后,通过将范围内的有效数字分组(以易于阅读的方式):
, (18[4-6]|23[1-9]|24[0-2]|26[4-9]|2[7-9][0-9]|30[0-9]|31[0-3]), '+[\w ',()-:]*;$
答案 1 :(得分:1)
[...]
构造称为字符类,它匹配指定集合中的单个字符(偶数|
被视为文字管道在他们中)。您打算使用分组构造,即(...)
或非捕获变体(?:...)
。
要使用);
替换所需的子字符串,可以使用以下正则表达式:
,\h+\d{3},\h+'+[\w\h',():-]*;$
或 - 如果您需要保留范围 -
,\h+(?:18[456]|23[1-9]|24[0-2]|26[4-9]|27[0-9]|28[0-9]|29[0-9]|30[0-57-9]|31[0-3]),\h+'+[\w\h',():-]*;$
并使用\);
作为替代模式。
请注意,Notepad ++正则表达式模式中的常规空格可以替换为\h
(水平空格)。我收缩了你的范围了。此外,替换模式中的 )
必须转义,因为它在Boost条件替换模式中具有特殊含义。