0

正则表达式对我来说是新的(但它们很棒而且很有用: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

但是我选择了整个文本;我希望begin.+end搜索.+直到end找到第一个,但它会搜索到最后一个。

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

事实是我只对选择内部.+不感兴趣beginend但这是另一个问题。

4

1 回答 1

1

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

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

演示

解释:

  • (?<=begin)正向后视用于在特定模式之后进行匹配。在此,正则表达式引擎在开始之后设置匹配标记。
  • .+?匹配一个或多个字符。?使正则表达式非贪婪,因此它会导致最短匹配。
  • (?=end)一旦找到 string end,正则表达式引擎就会停止匹配。从而为您提供开始和结束之间的字符。
于 2014-07-02T12:38:29.993 回答