Notepad ++中括号中的正则表达式[重复]

Posted

技术标签:

【中文标题】Notepad ++中括号中的正则表达式[重复]【英文标题】:enclosing regular expression in parentheses in Notepad++ [duplicate] 【发布时间】:2022-01-17 02:29:56 【问题描述】:

所以我在 excel 中有一个很大的项目列表。我将它们复制到 Notepad++,因为它内置了正则表达式。

可能是 AuAC21-XTS02L 或 BgU​​X20-C02S 等。基本上我想用 Au(AC21-XTS02)L 和 Bg(UX20-C02)S 替换这两个。

使用正则表达式 \D\D\d\d-(\D)1,3\d\di 可以完美地找到我想用括号括起来的文本部分,但现在我不知道如何.

我尝试使用 (\D\D\d\d-(\D)1,3\d\d) 作为替代品,但后来我收到类似 Au(DDdd-D1,3dd )L.

任何帮助将不胜感激。

【问题讨论】:

请edit your question 添加示例文本文件预期结果。 匹配任何你有的模式,用\($&\)替换它并用括号括起来。 【参考方案1】:

您可以将整个匹配的字符串存储在一个组中,然后将其替换为($1)。请注意,根据您的 Notepad++ 版本,您可能需要使用 \ 而不是 $ 来引用匹配组(即替换字符串将是 (\1)

看看这个 Regex101 sn-p:https://regex101.com/r/0e1Wcc/1

它将转换一个样本输入,例如,

it could be AuAC21-XTS02L or BgUX20-C02S etc.
it could be AuAC21-XTS02L or BgUX20-C02S etc.
it could be AuAC21-XTS02L or BgUX20-C02S etc.

进入

it could be Au(AC21-XTS02)L or Bg(UX20-C02)S etc.
it could be Au(AC21-XTS02)L or Bg(UX20-C02)S etc.
it could be Au(AC21-XTS02)L or Bg(UX20-C02)S etc.

【讨论】:

【参考方案2】:

您可以将完全匹配 $0 用于模式 \D\D\d\d-\D1,3\d\d 而不需要捕获组,因为这不是必需的,并将其用于括号 \($0\) 之间的替换

输出将是

Au(AC21-XTS02)L or Bg(UX20-C02)S

注意 \D 匹配除数字以外的任何字符,因此它也可以匹配空格或换行符。

查看示例字符串,更精确地匹配(使用相同的替换 \($0\) 可能是:

[A-Z][a-z]\K[A-Z]2\d\d-[A-Z0-9]1,3\d\d(?=[A-Z])

Regex demo

【讨论】:

以上是关于Notepad ++中括号中的正则表达式[重复]的主要内容,如果未能解决你的问题,请参考以下文章

python正则表达式中的匹配括号[重复]

正则表达式在非常大的html文件中匹配java中的花括号[重复]

Python - 正则表达式将数据框中的一列拆分为 2 [重复]

django中的urlpatterns的正则语法

javascript中使用正则表达式

删除除 0-9 + - / * 和 ^ 之外的任何字符 [重复]