如何在记事本++中查找和替换括号的内容

Posted

技术标签:

【中文标题】如何在记事本++中查找和替换括号的内容【英文标题】:How to find and replace contents of a bracket inside notepad++ 【发布时间】:2013-05-21 14:24:33 【问题描述】:

我有一个大文件,每个括号内都有内容。这不在行首。

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

我需要做以下事情

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

    同时删除行号 1.Atmosphere (10000) 到普通的Atmosphere

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

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

      每组关键词都是一个新行AtmosphericAtmospheric compositionAir quality

      每个集合都是一行,由一个空格和逗号分隔Atmospheric, Atmospheric composition, Air quality

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

【问题讨论】:

创建一个新问题可能比在原始问题上添加更多内容更好。 【参考方案1】:

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

    您需要分组搜索

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

      (.*) 下一个表达式之前的所有内容

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

      (.*) 其他一切

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

      \1\2\3\4 这什么都不做 :) 只打印从 1.11.4

      的所有组

      \2 这样你只能得到1.2

      new_thing\2new_thing 在组前后添加您的文本

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

      李> 如果您需要将反斜杠添加为文本(或正则表达式使用的其他特殊符号),则必须对其进行转义,因此您将 \\ 用于反斜杠或将 \$ 用于美元符号

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

在截图上你可以看到我是如何使用它的(我找到并替换了一行)

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

将替换从 \2 更改为 \2,

现在你需要加入它,所以最简单的方法是 Edit->Line Operations->Join Lines 但如果你想成为真正的专业人士,请切换到Extended mode(在Replace 窗口中的Regular expression 模式上方)并找到\r\n 并替换为空格。

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

【讨论】:

感谢您的分解解释,我试图分解它并像您说的那样理解。但是当我在记事本中尝试时,记事本说“找不到任何匹配的文本 ([0-9().]?)(.*)(\s()(.*)” 嘿伙计 - 你在 (\s() 的左括号中省略了转义,所以它应该看起来 (\s\() 另一个解决方法是我在第一个表达式中将 ? 替换为 * 你的答案最多。 你的答案最多。 You solved) Scenario 2 and 4.1。你的解释更容易理解。然而,当我把 \2 放在替换中时,它给了我时髦的输出 - 每行都有S( 现在试试 - 我添加了一些进一步的解释【参考方案2】:

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

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

新增 Q4 的更新。

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

【讨论】:

除了数字 OP 也有括号内的字符。 @Pshemo 感谢您发现这一点。将\(\d+\)$ 更改为\(\w+\)$【参考方案3】:

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

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

说明:

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

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

Online demo.

【讨论】:

以上是关于如何在记事本++中查找和替换括号的内容的主要内容,如果未能解决你的问题,请参考以下文章

记事本怎么换行

如何在记事本中批量替换掉相同格式的文本?例如<" seq="1" /> ,<" seq="2" />

把记事本里所有的空格替换为换行怎么弄的?

在记事本++中用正则表达式查找和替换可变数字

批处理bat查找记事本文件中指定字符串并替换为回车,也就是换行,最后保存到记事本中

表格的内容复制到记事本发现内容增加了空格和“ 符号,怎样在表格里去掉这些空格和符号