这是问题所在。我正在写一个软件,从一个错误跟踪系统查询错误附件。我可以通过只获取文本附件(纯文本/文本等)来过滤查询,并且我希望只保留有效的补丁文件(具有类似diff -u输出的文件,可以作为源文件的补丁应用)。因此,我需要一种方法来指定哪个附件是有效的补丁。例如:
假设我有一个包含以下内容的附件:
索引: compiler/cpp/src/generate/t_csharp_generator.cc
- compiler/cpp/src/generate/t_csharp_generator.cc (1033689版) +++ compiler/cpp/src/generate/t_csharp_generator.cc (工作副本) @@ -456,7 +456,7 @@ t= ((t_typedef*)t)->get_type();} if ((*m_iter)->get_value() != NULL) {- print_const_value(out,"this.“+ (*m_iter)->get_name(),t,(*m_iter)->get_value(),true,true);+ print_const_value(out,"this._“+ (*m_iter)->get_name(),t,(*m_iter)->get_value(),true,true);}}
我如何知道这是一个有效的补丁?有没有一个正则表达式来匹配一些可能的diff -u输出,这样我就可以在java中写出类似这样的代码:
String attachmentContent = .....if(attachmentContent.matches(正则表达式))...
提前谢谢你,猫王
发布于 2011-12-29 00:43:06
你不能用一个简单的正则表达式来测试,也不能用一个复杂的正则表达式引擎来测试,它需要一个正则表达式引擎,它能够解释@@之间的部分为数字,并从中定义重复计数,我不知道有哪个RE引擎可以做到这一点。
另一方面,你应该不会有太多的问题找到一个库解析和加载Unix补丁(这绝对不是一个计算密集型任务),所以只要尝试加载补丁就可以让你验证它。例如,Java diff utils应该直接做到这一点。
https://stackoverflow.com/questions/5945258
复制相似问题