TextMate中的正则表达式问题

时间:2014-07-02 12:36:00

标签: regex textmate oniguruma

正则表达对我来说是新的(但它们非常精彩且有用:D)。但是,在尝试在TextMate中使用它们之后,我得到了意想不到的结果。我不确定这是一个错误还是正则表达式的工作方式。

我有这段代码

begin text in the middle end and more text and a
second begin second text in the middle end

使用begin.+end搜索我希望得到两个结果

  1. begin text in the middle end
  2. begin second text in the middle end
  3. 但是我选择了全文;我希望begin.+end能够在找到第一个.+之前搜索end,但会搜索到最后一个{。}}。

    他们是如何工作的?我在哪里可以学习如何使用正则表达式?

    事实是,我有兴趣选择内部.+而不是beginend,但这是另一个问题。

1 个答案:

答案 0 :(得分:1)

使用下面的正则表达式来获取开始和结束之间的字符串,

(?<=begin).+?(?=end)

DEMO

<强>解释

  • (?<=begin)正面后视用于在特定模式之后进行匹配。在这种情况下,正则表达式引擎会在开始之后设置匹配标记。
  • .+?匹配一个或多个字符。?使正则表达式非贪婪,因此会导致最短匹配。
  • (?=end)一旦找到字符串end,正则表达式引擎就会停止匹配。从而为您提供开始和结束之间的字符。