正则表达对我来说是新的(但它们非常精彩且有用:D)。但是,在尝试在TextMate中使用它们之后,我得到了意想不到的结果。我不确定这是一个错误还是正则表达式的工作方式。
我有这段代码
begin text in the middle end and more text and a
second begin second text in the middle end
使用begin.+end
搜索我希望得到两个结果
begin text in the middle end
和begin second text in the middle end
但是我选择了全文;我希望begin.+end
能够在找到第一个.+
之前搜索end
,但会搜索到最后一个{。}}。
他们是如何工作的?我在哪里可以学习如何使用正则表达式?
事实是,我有兴趣选择内部.+
而不是begin
和end
,但这是另一个问题。
答案 0 :(得分:1)
使用下面的正则表达式来获取开始和结束之间的字符串,
(?<=begin).+?(?=end)
<强>解释强>
(?<=begin)
正面后视用于在特定模式之后进行匹配。在这种情况下,正则表达式引擎会在开始之后设置匹配标记。.+?
匹配一个或多个字符。?
使正则表达式非贪婪,因此会导致最短匹配。(?=end)
一旦找到字符串end
,正则表达式引擎就会停止匹配。从而为您提供开始和结束之间的字符。