【问题标题】:Regular expressions in Notepad++. How make pattern that could be use in a few linesNotepad++ 中的正则表达式。如何制作可以在几行中使用的模式
【发布时间】:2018-05-22 13:46:57
【问题描述】:

我必须在 Notepad++ 中一键查找和替换一些行!
我该怎么做?

文本:

//A lot of code
 int i = n << 3;
 cout << "message1";
 cout << "message1" << var1 <<"message2"<< var2 << /* undefened length */ << var50; 
 cout << "messageA1" << endl;
 cout << "messageA1" << varA1 <<"messageA2"<< varA2 <<  /* undefened length */ << endl << varA67 << endl;
//A lot of code


查找:“SomeAwesomePattern”;
替换:“SomeAwesomeReplacerFor”

结果:

//A lot of code
int i = n << 3;
Console.Write("message1");
Console.Write("message1" + var1 + "message2" + var2 + /* undefened length */ + var50);
Console.Write("messageA1" + "\n");
Console.Write("messageA1" + varA1 + "messageA2" + varA2 + /* undefened length */+"\n" + varA67 +"\n");
//A lot of code

操作:

cout 替换为 Console.Write(
替换为 "\n"
rpelace by +
rpelace ; by );


必须忽略 所有不以 cout

开头的文本

【问题讨论】:

  • printf("message1" + var1 + "message2" + var2 + /* undefened length */ + var50); 无论如何都不会很好地工作。
  • 这看起来像是 XY 问题的完美示例。也许你最好问问为什么 cout 不适合你
  • 对不起。正确的 !它不会工作..好的。怎么样:string someText = "message1" + var1 + "message2" + var2 + /* undefended length */ + var50;
  • 我稍微改变了任务...

标签: c# c++ regex notepad++


【解决方案1】:

要作为一般练习回答,请运行

  • 将所有cout.*&lt;&lt;.*\K&lt;&lt; 替换为+,多次替换,直到无法匹配为止。
  • 将所有cout.*&lt;&lt;.*\Kendl 替换为"\\n",多次
  • 将所有cout.*&lt;&lt;.*\K(?&lt;!\))(?=;) 替换为\)
  • 将所有cout.*&lt;&lt;替换为Console.Write\(

来自perlre

  • \K(保留 \K 左侧的内容)
  • (?&lt;!..) 一个零宽度的否定后向断言。
  • (?=..) 一个零宽度的正向前瞻断言。

【讨论】:

  • 谢谢兄弟!我会试试看。我稍微改变了任务。用 "\n" 查找和替换 endl 怎么样
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多