繁体   English   中英

正则表达式匹配新行

[英]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

如果我没记错的话,正则表达式应该返回所有以)结尾的Log。[dD]语句;

请让我知道为什么它没有收到别人以及如何解决此问题。

谢谢

这个正则表达式应该工作:

Log\.[dD][\s\S]*?\);

您犯的两个错误是:

  • . 与行尾不匹配。 您应该使用类似于[\\s\\S] ,该名称应与所有内容匹配。
  • 您需要懒惰地匹配,在看到的第一个( )处停止匹配。 那么写*? 代替*

请注意,正则表达式不适用于Log.d(TAG, "Construct (product); info"); 因为第一个); 不是方法调用的结尾。 为了匹配这些,我建议您编写/使用解析器。

演示版

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM