如何在记事本++中查找和替换括号的内容
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 中的数字,并在某些字符上转义
每组关键词都是一个新行Atmospheric
Atmospheric composition
Air quality
每个集合都是一行,由一个空格和逗号分隔Atmospheric, Atmospheric composition, Air quality
我尝试像这样使用正则表达式查找,\(*\)
它找到了括号,但不知道如何替换它,以及在哪里放置替换,以及哪个变量保存替换值。
【问题讨论】:
创建一个新问题可能比在原始问题上添加更多内容更好。 【参考方案1】:这是我的记事本表达式([0-9(). ]*)(.*)(\s\()(.*)
您需要分组搜索
([0-9. ]*)
数字、空格和点组合0次或多次
(.*)
下一个表达式之前的所有内容
(\s\()
空格和左括号
(.*)
其他一切
在替换框中 - 如果您放置则用于练习
\1\2\3\4
这什么都不做 :) 只打印从 1.1 到 1.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" />