【问题标题】:replace characters in notepad++ BUT exclude characters inside single quotation marks替换记事本++中的字符但排除单引号内的字符
【发布时间】:2015-11-08 15:06:02
【问题描述】:

我有一个这样的字符串:

SELECT column_name FROM table_name WHERE column_name IN ('A' , 'stu' ,'Meyer', ....);

我想从上到下替换记事本++中的所有字符(反之亦然)但是,从替换中排除单引号内的字符。

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

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

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

select column_name from table_name where column_name in ('A' , 'stu' ,'Meyer', ....);

或(反之亦然)

SELECT COLUMN_NAME FROM TABLE_NAME WHERE COLUMN_NAME IN ('A' , 'stu' ,'Meyer', ....);

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

(我发现单引号部分带有例如 '(.*?)' 或 '(\w+)' 或 '[[:alpha:]]{1,}',..)

我很高兴每个答案,如果你不使用记事本++!

【问题讨论】:

  • 如果您只想在打开( 之前进行转换,请搜索^(.*?\() 并替换为\U\1 或更低:\L\1

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


【解决方案1】:

下面的正则表达式将匹配单引号内不存在的所有大写字母。

[A-Z](?=(?:'[^']*'|[^'\n])*$)

Now, right-click on the matched characters and change it to lowercase.

DEMO

【讨论】:

  • 非常非常感谢(也感谢您的努力)——这正是我所需要的——完美
  • 我知道这可能很明显,但是您如何使用该正则表达式选择文本?我试过Search-Mark...,它确实标记了文本但没有选择它,所以我可以转换大小写。
猜你喜欢
  • 2015-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多