【问题标题】:Perl Regular Expression Syntax from the Boost libraryBoost 库中的 Perl 正则表达式语法
【发布时间】:2015-02-17 18:01:56
【问题描述】:

我想在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\] 正则表达式。我认为它可以正常工作,因为正常的编码是顺序的并且逐行进行。

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

【问题讨论】:

  • 无法理解你。你需要先学会如何提问。
  • boost 标签与问题有什么共同点?
  • 我不明白为什么我什至给出了一个清晰的例子 HuStmpHrrr 时你都无法理解我的要求。另外 boost 标签与 boost 库相关,这是必要的,因为如果表达式在任何其他库中,我就无法使用它。

标签: regex boost


【解决方案1】:

这项任务本质上需要计数。 anbn 语言is not regular,这就是你需要的。所以,至少从理论上来说,正则表达式帮不了你。

但在实践中,理论与实践不同。

  1. 您可以在文档上多次将.(?<!\[BACKSPACE\])\[BACKSPACE\] 替换为空字符串,直到它不会更改您的文档。 (那是negative lookbehind。)
  2. 现实世界的正则表达式引擎有一些非正则元符号,例如反向引用。可能有办法使用这些。
  3. 您可以随时将正则表达式与普通代码混合使用,或者只编写普通代码。这项任务并没有那么复杂。

当您使用 Sublime 时,您可能会对它的scripting API 感兴趣。

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

【讨论】:

    猜你喜欢
    • 2011-03-22
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 2014-02-23
    • 2023-03-14
    相关资源
    最近更新 更多