我有这样的文字:
asd dsa [SKU].[Analytic5].&[omg wtf] not found blah blah blah "&[omg wtf]". Query Text: <ccon>SELECT {[SKU].[Analytic5].&[omg wtf]} ON 0 FROM [Model_week] CELL PROPERTIES CELL_ORDINAL</ccon>
我需要从那里提取[SKU].[Analytic5].&[omg wtf] 。实际上是[SKU].[*].&[*]。
我做了这个正则表达式:
\[SKU\]\.\[.*\]\.\&\[.*\]
它有效......有点......它在第一次[天哪]之后抓住所有垃圾,直到最后一次[模型_周]见面。所以我的正则表达式的结果是:
[SKU].[Analytic5].&[omg wtf] not found blah blah blah "&[omg wtf]". Query Text: <ccon>SELECT {[SKU].[Analytic5].&[omg wtf]} ON 0 FROM [Model_week]
我只是不明白如何限制它。我尝试过添加 {1} 之类的方法,但没有帮助。
RegEx 量词
*
是一个贪婪量词,具有一个惰性量词*?
。贪婪量词和惰性量词之间的区别在于,贪婪量词将尝试匹配尽可能多的字符,而惰性量词将尝试匹配尽可能少的字符。
在您的示例中,其效果是
[.*\]
匹配从第一个[
到最后一个的所有内容]
。但是,如果您将这些量词更改为其惰性等价物,您的正则表达式将按您的预期工作。下面带有惰性量词的示例将与您期望的匹配:
上面的正则表达式在您的代码片段上使用时的输出: