新行的正则表达式匹配
Regex match for new lines
我正在尝试使用 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
如果我没记错的话,正则表达式应该 return 所有以 );
结尾的 Log.[dD] 语句
请告诉我为什么它不接收其他人以及如何解决这个问题。
谢谢
这个正则表达式应该可以工作:
Log\.[dD][\s\S]*?\);
你犯的两个错误是:
.
不匹配行尾。您应该使用类似于 [\s\S]
的内容,它匹配所有内容。
- 您需要延迟匹配,看到第一个
)
就停止匹配。所以写 *?
而不是 *
.
请注意,正则表达式不适用于 Log.d(TAG, "Construct (product); info");
之类的内容,因为第一个 );
不是方法调用的结尾。为了匹配这些,我建议你 write/use 一个解析器。
Demo
我正在尝试使用 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
如果我没记错的话,正则表达式应该 return 所有以 );
结尾的 Log.[dD] 语句请告诉我为什么它不接收其他人以及如何解决这个问题。
谢谢
这个正则表达式应该可以工作:
Log\.[dD][\s\S]*?\);
你犯的两个错误是:
.
不匹配行尾。您应该使用类似于[\s\S]
的内容,它匹配所有内容。- 您需要延迟匹配,看到第一个
)
就停止匹配。所以写*?
而不是*
.
请注意,正则表达式不适用于 Log.d(TAG, "Construct (product); info");
之类的内容,因为第一个 );
不是方法调用的结尾。为了匹配这些,我建议你 write/use 一个解析器。