在分隔符内替换(N ++)

时间:2015-08-30 01:28:28

标签: regex notepad++

我想删除字符串的所有实例,但只能在方括号之间的文本中删除。

因此,如果删除的字符串是省略号:

One ... Two ... Three [Four ... Five ... Six] ... Seven

预期产出:

One ... Two ... Three [Four Five Six] ... Seven

在RegEx中是不是太难了,在Notepad ++中首选?

3 个答案:

答案 0 :(得分:3)

您可以通过\G锚定来完成此操作。

Find: (?:\G(?!^)|[^[]*\[)[^].]*\K\.+\h*
Replace:

\G可以在两个位置中的一个位置匹配;字符串位置的开头或最后一个匹配结束时的位置。 \K转义序列重置报告的匹配的起始点,并且不再包括任何以前消耗的字符。你可以看到下面的演示。

Regex Demo

答案 1 :(得分:1)

字符串的文字对于完全回答你的问题很重要,但总的来说这就是你需要的...... *(在Regex on on sublime中显示,但在Notepad ++中的工作方式相同)

查找:

\[[^\]]*]

替换:在正则表达式匹配的任何位置替换为字面意义为空白。

细分查找:

  1. [ - 文字括号
  2. [^]] - 任何不正确的括号
  3. * - “任何不合适的任何东西”的任何迭代
  4. ] - 右外侧支架
  5. 细分替换:

    1. 没有任何文字,取代括号内的所有内容
    2. 需要考虑:

      1. 如果要保留括号,请替换语句更改
      2. 您可能需要考虑值分隔符
      3. 要验证的图像(使用的sublime文本可以更好地突出显示):

        Working Regex as requested, but in SublimeText2

答案 2 :(得分:1)

\.{3}\s*(?=[^\[]*\])

您可以简单地使用它并替换为empty string。请参阅演示。

https://regex101.com/r/sS2dM8/16