我正在尝试使用Java在我的代码中获取日志语句。我正在使用此正则表达式:
Log\.[dD].*\);
测试数据:
Log.d(TAG, "Construct product info");
test test test test
Log.d(TAG, "Loading Product Id: %d, Version: %s",
productInfo.getProductId(),
productInfo.getProductVersion());
test test test test
Log.d(TAG, "Loading Product Id: " +
ProductId + "Version:" +
Version);
test test test test
由于某种原因,正则表达式只接第一行,即
Log.d(TAG, "Construct product info");
正确的输出应为:
Log.d(TAG, "Construct product info");
Log.d(TAG, "Loading Product Id: %d, Version: %s",
productInfo.getProductId(),
productInfo.getProductVersion());
Log.d(TAG, "Loading Product Id: " +
ProductId + "Version:" +
Version);
https://regex101.com/r/OCl9dy/3
如果我没记错的话,regex应该返回所有以)结尾的Log。[dD]语句;
请让我知道为什么它不接别人,以及如何解决此问题。
谢谢
答案 0 :(得分:2)
此正则表达式应该起作用:
Log\.[dD][\s\S]*?\);
您犯的两个错误是:
.
与行尾不匹配。您应该使用与[\s\S]
类似的东西,它匹配所有内容。)
处停止匹配。因此,写*?
而不是*
。请注意,正则表达式不适用于Log.d(TAG, "Construct (product); info");
之类的内容,因为第一个);
并不是方法调用的结尾。为了匹配这些,我建议您编写/使用解析器。