【问题标题】:replace characters in notepad++ BUT exclude characters inside single quotation marks(2nd)替换记事本++中的字符但排除单引号内的字符(第二)
【发布时间】:2015-11-09 07:37:54
【问题描述】:

replace characters in notepad++ BUT exclude characters inside single quotation marks

对不起所有回答了第一个类似问题的用户(尤其是 Avinash Raj)——我确实忘记了第二种字符串。 (而且(那是可悲的事情)-我无法将解决方案从第一个类似问题调整为第二种字符串...)

我有两种不同的字符串:

SELECT column_name FROM table_name WHERE column_name IN ('A' , 'st9u' ,'Meyer', ....);
WHERE    a.object_type IN (' 'TABLE'', ''MATEerialIZED VIE3W'   ')

我想从上到下替换记事本++中的所有字符,但从内部替换字符中排除 单引号。

条件:单引号部分前后/之间不存在实体结构!

(这意味着 - 我不能使用 关键字“IN”或“,”或“(”或“)”或“;”等符号对于这个正则表达式 ...!)

有一次,单引号的两种结构是可能的: 'Word|Number'''Word|Number'' (但是,如第二个示例所示,每个单引号之间的空格数不同!)。

目标字符串(单引号内的字符必须保持不变):

select column_name from table_name where column_name in ('A' , 'st9u' ,'Meyer', ....);
where    a.object_type in (' 'TABLE'', ''MATerialIZED VIE3W'   ')

如何在 notepad++ 中排除单引号部分(从替换中)?

【问题讨论】:

标签: regex notepad++ regex-negation regex-lookarounds


【解决方案1】:

可以组合recursive 部分以获得'...'...。abc'' 并在之后使用\K for resetting。这是需要跳过的部分。并使用the trick,匹配管道中剩余的单词:

'\s*(?0)?[^']*'\K|(\w+)
  • (?0)? 这里的模式可以选择从头开始粘贴
  • \s 是一个shorthand 用于空白字符 [ \t\r\n\f]
  • \wword character 的缩写 [A-Za-z0-9_]

并替换为\L\1 以在第一个捕获组内捕获的较低单词或\U\1 替换为较高。
NP++ 6.7.9.2 中使用您的示例数据为我工作。 See regex101 用于测试模式。

【讨论】:

  • 您好,很抱歉我的下一个错误 - 您对这种情况的解决方案是好的。但是我只发布了整个第二条语句的一部分(愚蠢)-您也可以尝试解决这个问题吗?
  • 嗨@ora_job,它在哪里没有按预期工作?只是做了一点修改!
  • 我在下一条评论中发布了整个声明:(我没有提到的问题是 - ''Word/Number'' 部分额外包含在全局单引号中 - 请查看整个第二条语句的开头和结尾...)
  • SELECT column_name FROM table_name WHERE column_name in ('A' , 'st9u' ,'Meyer', ....); THEN vpl_sql_string := ' SELECT b.mview_name FROM all_objects@'|| pi_2 ||' a ,user_mviews b ,user_mview_detail_relations c WHERE a.object_type IN (''TABLE'', ''MATerialIZED VIE3W'') AND a.owner = UPPER( :bi_1 ) AND a.object_name = c.detailobj_name AND b.mview_name = c .mview_name AND (b.refresh_method = ''COMPLETE'' OR (b.refresh_method = ''FORCE'' AND b.last_refresh_type = ''COMPLETE'')) AND TO_DATE(a.timestamp,''YYYY-MM-DD :HH24:MI:SS'') > b.last_refresh_date ';
  • 请等待您的解决方案 - 我打开第 3 部分,格式正确!
猜你喜欢
  • 2015-11-08
  • 1970-01-01
  • 1970-01-01
  • 2021-03-25
  • 1970-01-01
  • 2022-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多