如何在 Notepad++ 中使用通配符来“查找并替换”所有这些文本?

如何在 Notepad++ 中使用通配符来“查找并替换”所有这些文本?

非常感谢您的帮助。我正在处理大量已用 XML 脚本标记的文本,我需要整理一些内容。更具体地说,方括号中有数百个数字(例如“[1234]”),我需要删除这些数字(包括括号)。每个数字都不同,这些数字可以是 3 到 5 位数字。

我需要做的第二件事是将 XML 标签放在其他一些文本周围。这些是圆括号中的名称。例如:

他说(史密斯先生)......

我想将其更改为:

<annot> (Mr. Smith) </annot>说...'。

我怎样才能完成这两项更改?

我已经尝试使用扩展模式搜索“[.*]”,但没有返回任何结果。当我使用 RegEx 尝试相同操作时,我得到了很多结果,但它似乎在搜索语料库中的每个方括号。

答案1

方括号是正则表达式中的特殊标记([a-z]表示范围内的任何字符az,因此您必须对其进行转义。

您的搜索表达式将变成\[\d+\]\d+表示一个或多个数字)。但是,您想用数字单独替换它。您需要使用括号设置捕获组,并在替换表达式中引用它。您的设置将变成:

  • 搜索:\[(\d+)\]
  • 用。。。来代替:\1

至于您的第二个问题,我不确定我是否正确理解了您给出的上下文......如果只有名称在括号之间,您可以用 替换\([^\)]+\)<annot> \0 </annot>或者\(Mr\. [^\)]+\)如果名称前面有Mr.

具体来说,它的工作方式如下:

  • 您搜索的括号必须转义(因为它们通常用于定义捕获组,因此您使用\(\)
  • [^...]+表示一个或多个不...
  • 因此,您的搜索表达式是一个左括号,后跟任何不是右括号的字符(因此它应该与名称匹配),后跟右括号。
  • \0表示替换区域中的整个搜索表达式

如果您有一个要替换的名称列表,那么您最好用它\(whatever name\)作为搜索表达式,如果没有,那么这是不可能的,因为您无法让正则表达式“猜测”什么是名称,什么不是名称。

相关内容