我有这样的文字:
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\]\.\[.*\]\.\&\[.*\]
它有效...有点...它会在第一个[天哪]之后抓取所有垃圾,直到最后一个[Model_week]遇到。 所以我的正则表达式的结果是:
[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 量词
*
是一个贪婪量词,具有惰性等价物 *?
。
贪婪量词和惰性量词之间的区别在于,贪婪量词将尝试匹配尽可能多的字符,而惰性量词将尝试匹配尽可能少的字符。
在您的示例中,此效果是
[.*\]
匹配从第一个 [
到最后一个 ]
的所有内容。但是,如果您将这些量词更改为其惰性等价物,您的正则表达式将按您的预期工作。
下面带有惰性量词的示例将与您期望的匹配:
\[SKU\]\.\[.*?\]\.\&\[.*?\]
上面正则表达式在您的代码片段中使用时的输出:
[SKU].[Analytic5].&[omg wtf]