6

我有一个大文件,每个括号内都有内容。这不是在行的开头。

1. Atmos-phere (7800)
2. Atmospheric composition (90100)
3.Air quality (10110)
4. Atmospheric chemistry and composition (889s120)
5.Atmospheric particulates (10678130)

我需要执行以下操作


  1. 1.Atmosphere (10000)替换整个内容,将行号去掉Atmosphere

  2. 将行号也删除 1.Atmosphere (10000)为纯文本Atmosphere

  3. 使其成为 1.Atmosphere (10000)普通的超链接<a href="http://blahqd.com/Atmosphere.htm">linky study</a>

  4. [我添加/编辑] 将单词提取到一个新文件中,在其中我们得到一个简单的关键词列表。您能否解释一下替换 \1\2 中的数字,并在某些字符上转义

    1. 每组关键词都是一个新行
      Atmospheric
      Atmospheric composition
      Air quality

    2. 每组是一行,由一个空格和逗号分隔
      Atmospheric, Atmospheric composition, Air quality

我尝试像这样使用正则表达式查找,\(*\)它找到括号,但不知道如何替换它,以及在哪里放置替换,以及什么变量保存替换值。

4

3 回答 3

11

这是我的记事本表达式([0-9(). ]*)(.*)(\s\()(.*)

  1. 您需要分组搜索

    1. ([0-9. ]*)数字、空格和点组合 0 次或多次

    2. (.*)直到下一个表达式的一切

    3. (\s\()空格和左括号

    4. (.*)其他一切

  2. 在替换框中 - 如果您放置则用于练习

    1. \1\2\3\4这什么都不做:) 只打印上面从1.11.4的所有组

    2. \2这样你只得到1.2

    3. new_thing\2new_thing在组之前和之后添加您的文本

    4. <a href=blah.com/\2.html>linky study</a>所以现在添加了您的文本-创建链接时单词之间的空格可能会出现问题-因此需要制作另一个表达式来替换链接中的所有空格,即_

    5. 如果您需要将反斜杠添加为文本(或正则表达式使用的其他特殊符号),则必须对其进行转义,以便您\\输入反斜杠或\$dolar 符号

想要更多曲调 -<a href=blah.com/\2.html>\2</a>再次添加1.2组 - 或使用任何你想要的

在截图上你可以看到我是如何使用它的(我找到并替换了一行) 在此处输入图像描述

好的,然后我们有案例 4.2,末尾有冒号,所以只需在提取部分后添加冒号:

将替换从更改\2\2,

现在你需要加入它,最简单的方法是编辑->线操作->加入线 ,但如果你想成为真正的专业人士,请切换到(窗口中的模式Extended mode上方)并查找并替换为空格。Regular expressionReplace\r\n

在某些情况下,删除行尾可能会有所不同,但这是另一回事了——现在我假设您使用的是 windows,因为 Notepad++ 是 windows 工具并且行尾是 windows 样式:)

于 2013-05-26T18:04:04.553 回答
8

以下正则表达式应该可以完成这项工作:\d+\.\s*(.*?)\s*\(.*?\).

和替换:<a href=example.com\\\1.htm>\1</a>

解释:

  • \d+: 匹配一个数字 0 次或多次。
  • \.: 匹配一个点。
  • \s*: 匹配空格 0 次或多次。
  • (.*?):对所有内容进行分组和匹配,直到(找到为止。
  • \s*: 匹配空格 0 次或多次。
  • \(.*?\): 匹配括号和它之间的内容。

替换部分很简单,因为\1它指的是匹配组。

在线演示

于 2013-05-26T16:48:22.590 回答
2

尝试替换^\d+\.(.*) \(\w+\)$<a href=blah.com\\\1.htm>linky study</a>.

^\d+.删除前导数字和点。收集(.*)的话。然后是一个空格。匹配括号中的\(\w+\)$最终数字。

添加 Q4 的更新。

正则表达式捕获写在圆括号(). 在要搜索的文本中找到的括号必须转义为\(and \)。在替换表达式中,\1\2等被相应的捕获表达式替换。因此,诸如Z(\d+)X([aeiou]+)Y可能匹配的搜索表达式Z29XeieiY然后替换表达式P\2Q\1R将插入PeieiQ29R。在此答案顶部的搜索中,有一个捕获,(.)捕获或收集单词,然后\1将捕获的单词插入替换文本中。

于 2013-05-26T16:24:58.523 回答