来自Boost库的Perl正则表达式语法

时间:2015-02-17 18:01:56

标签: regex boost

我想在Sublime Text中进行以下替换操作(使用Perl正则表达式语法)。

I would loe [BACKSPACE][BACKSPACE]ve to play with you

应该成为

I would love to play with you

因此,对于每个[BACKSPACE],我想删除一个[BACKSPACE]和一个字符。

存在一个问题:它们可能会相互影响:

I would loe [BACKSPACE][BACKSPACE]ve to play with you

将成为

I would loe [BACKSPACEve to play with you

如果我们使用.\[BACKSPACE\]正则表达式。我认为它会起作用,因为正常的编码是顺序的并逐行进行。

我如何编写这样的正则表达式?

1 个答案:

答案 0 :(得分:0)

这项任务基本上需要计算。 a n b n 语言is not regular,这是您需要的语言。所以,至少从理论的角度来看,正则表达式无法帮助你。

但实践理论与实践不同。

  1. 您可以在文档上多次用空字符串替换.(?<!\[BACKSPACE\])\[BACKSPACE\],直到它不会更改您的文档。 (那是negative lookbehind。)
  2. 真实世界的正则表达式引擎有一些不常规的符号,例如:反向引用。也许,有一种方法可以使用它们。
  3. 您始终可以将正则表达式与普通代码混合,或者只编写普通代码。这项任务并不复杂。
  4. 当您使用Sublime时,您可能会对其scripting API感兴趣。

    关于正则表达式的知识,请尝试阅读J. Friedl的正则表达式一书。它对该主题有广泛而一致的报道。