正则表达式,用于在Eclipse中匹配“ non-javadoc”注释

| 我正在尝试以格式匹配that0ѭ注释的正则表达式
/*
 * (non-javadoc)
 *
 * some other comment here
 *
 */
到目前为止,我有
(?s)/\\*\\R.*?non-Javadoc.*?\\*/
,但实际上匹配得太多了。我的文件顶部有一个标题,类似于
/*
 * header text
 */
 public class MyClass {

 }
它与文件顶部的ѭ4匹配,但是我真的只想匹配生成的ѭ0注释。谁能帮我修复此正则表达式? 编辑:我正在尝试使用Eclipse“查找/替换”对话框,但是如果需要,我愿意使用外部工具。     
已邀请:
        应该这样做:
(?s)/\\*[^*](?:(?!\\*/).)*\\(non-javadoc\\)(?:(?!\\*/).)*\\*/
/\\*[^*]
匹配C样式注释(
/* */
)的开头,但不匹配JavaDoc注释(
/** */
(?!\\*/).
匹配任何单个字符,除非它是
*/
序列的开始。搜索
(?:(?!\\*/).)*
而不是
.*?
使得匹配不可能在一个注释中开始,而在另一个注释中结束。 更新:在对Jacek的评论的(迟来的)响应中:是的,您可能想在正则表达式的末尾添加一些内容,以便可以将其替换为空字符串,而不会在代码中留下很多空白行。但是Jacek的解决方案要复杂得多。您只需要添加
\\s*
\\R
转义序列与许多换行符匹配,包括Unicode行分隔符(
\\u2028
)和段落分隔符(
\\u2029
)以及DOS /网络回车+换行符(
\\r\\n
)。但是这些都是空白字符,因此ѭ19匹配它们(至少在Eclipse中;根据文档,它等效于
[\\t\\n\\f\\r\\p{Z}]
)。 Jacek添加中的ѭ14仅用于匹配换行符之前可能存在的任何水平空白(空格或制表符),以及其后的缩进。 (您必须删除它,因为您不是要删除注释的第一行之前的缩进。)但是事实证明,
\\s*
可以完成全部工作:
(?s)/\\*[^*](?:(?!\\*/).)*\\(non-javadoc\\)(?:(?!\\*/).)*\\*/\\s*
    
        在Perl中,它看起来像
/
   \\/\\*
   (?: (?! \\*\\/ ) . )*
   non-javadoc
   (?: (?! \\*\\/ ) . )*
   \\*\\/
/sx
    

要回复问题请先登录注册