【问题标题】:Regex: Select only the line 3 (mark particular line)正则表达式:仅选择第 3 行(标记特定行)
【发布时间】:2016-09-10 13:35:16
【问题描述】:

假设我只想选择第 3 行,用许多文档中的另一行替换它。

我使用来自 Notepad++ 和 GrepWin 的正则表达式。我尝试过类似

\A^(.*){2}.*$

但它不起作用。

PS:Same question in Russian.

【问题讨论】:

  • 一次尝试
  • 您使用什么编程语言?你试过什么模式?就目前而言,没有足够的信息来回答您的问题。请编辑您的问题以包含它。
  • 我使用来自 Notepad++ 和 GrepWin 的正则表达式。我尝试过类似 \A^(.*){2}.*$ 但不工作

标签: regex notepad++


【解决方案1】:

你可以使用

\A((?:.*\R){2}).*((?s:.*))\z

替换为$1my new line$2

详情:

  • \A - 文档开始
  • ((?:.*\R){2}) - 第 1 组(使用一对未转义的括号创建)包含 2 个零个或多个字符序列,除了换行符后跟换行符(前两行)
  • .* - 除换行符以外的零个或多个字符(这将被替换)
  • ((?s:.*)) - 第 2 组捕获任何零个或多个字符,直到....
  • \z - 文档结束。

$1 是对使用正则表达式的括号部分捕获的值的反向引用。

【讨论】:

  • 你好维克托。您的正则表达式很好,但它不会只选择第 3 行的一次。它选择 3 行的所有倍数....6,9,12.. 行。因此,如果我想全部替换,将更严格地替换第 3 行。
  • 啊,是的。您需要再添加一个组。查看更新。
  • 有效。非常感谢你
猜你喜欢
  • 1970-01-01
  • 2014-02-14
  • 1970-01-01
  • 2021-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-20
相关资源
最近更新 更多