【问题标题】:Notepad ++ Search and replace the text 2 specific lines onlyNotepad ++ 仅搜索和替换文本 2 个特定行
【发布时间】:2020-09-14 02:14:15
【问题描述】:

如果第 17 行包含特定模式,我必须在每个 project.wsCFG 文件中替换 2 行。 同名的文件存在于项目文件夹的许多子目录中。

示例: 如果第 17 行包含模式“ArticleConnectionStringSQL” val="Provider=SQLOLEDB.1"

将第 14 行替换为:<P id="ArticleConnectionType" val="SQL" /> 并将第 17 行替换为:<P id="ArticleConnectionStringSQL" val="Data Source=sv-it-db-6;Initial Catalog=20200526_WSCAD_IPP;Integrated Security=True" />

我可以在notepadd++中搜索这些文件,没问题。我认为替换这两行的最好方法是使用正则表达式。

谁能帮我解决这个问题的正则表达式代码?

谢谢。

安德烈亚斯

【问题讨论】:

  • 答案对解决问题有帮助吗?

标签: regex replace notepad++ line


【解决方案1】:

您可以使用重复的非捕获组和量词捕获第 1 组中的前 13 行。

然后使用与第一组相同的机制匹配第 14 行并在第二个捕获组中捕获第 15 行和第 16 行。

然后在第 17 行匹配你的模式。

\A((?:.*\R){13}).*((?:\R.*){2})\R.*ArticleConnectionStringSQL" val="Provider=SQLOLEDB\.1.*

部分

  • \A 字符串开始
  • ( 捕获第 1 组
    • (?:.*\R){13} 匹配前 13 行,其中 \R 匹配 unicode 换行序列
  • )关闭群
  • .*匹配线14
  • ( 捕获第 2 组
    • (?:\R.*){2} 匹配第 15 行和第 16 行
  • )关闭群
  • \R.*ArticleConnectionStringSQL" val="Provider=SQLOLEDB\.1.* 将第 17 行与您的字符串匹配

Regex demo

在替换中,将 2 个捕获组与您的替换值一起使用。

$1<P id="ArticleConnectionType" val="SQL" />$2\n<P id="ArticleConnectionStringSQL" val="Data Source=sv-it-db-6;Initial Catalog=20200526_WSCAD_IPP;Integrated Security=True" />

【讨论】:

    猜你喜欢
    • 2013-10-18
    • 1970-01-01
    • 2014-04-28
    • 2019-01-03
    • 2014-03-14
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 2015-04-02
    相关资源
    最近更新 更多