Notepad ++中的正则表达式,带有带问号运算符的负前瞻

时间:2016-09-02 13:28:55

标签: regex notepad++ negative-lookahead square-bracket

我正在尝试找到一种方法来将方括号替换为一些字幕文件的撇号,但仅适用于这些方括号不包含在开头有方括号的整个句子的情况。结束了。

这些行将方括号更改为撇号:

[que] vão levar [vocês]
ao [limite].

虽然这些不会:

[Vamos começar]
[com algo simples.]

我想出了以下正则表达式命令

(?!^\[.*?\]$)(\[.*?\])

使用否定前瞻来查找以[开头并以]开头的行,同时使用内部问号字符?作为运算符来阻止选择带有额外方括号的行

不幸的是,这似乎不起作用。我在这里做错了什么?

1 个答案:

答案 0 :(得分:4)

您可以匹配以[开头并以]结尾且没有[]的行并捕获到第1组,并且只匹配其他{{ 1}}和[并使用条件替换模式替换:

找到:]
替换为:^(\[[^][\r\n]*\])$|[][]

搜索模式详情

  • (?1$1:') - 行首
  • ^ - 第1组捕获(\[[^][\r\n]*\]),然后是[][\r以外的0个或更多字符,那么\n在......
  • ] - 行尾
  • $ - 或
  • | - [][][

替换模式详情

  • ] - 第1组是否匹配?如是,
    • (?1 - 使用第1组内容
    • $1 - 或
    • : - 单撇号
  • ' - 条件模式的结束。

enter image description here