Regex删除包含特定单词的Java注释块
我正在尝试删除包含特定Java文档注释的注释 我想删除这个评论块Regex删除包含特定单词的Java注释块,regex,replace,javadoc,Regex,Replace,Javadoc,我正在尝试删除包含特定Java文档注释的注释 我想删除这个评论块 /** * @author: Bob * @since 28.mar.2008 * */ 但不是这个街区 /** * This class represents ... * * and so on */ 到目前为止,我有一个regexp: ^/\*\*(.|\s)+?\*/ 哪个匹配块注释 但我需要在其中的某个地方添加一些条件(例如,阻止包含“@since”的注释) 我想关键是要用look aheads,
/**
* @author: Bob
* @since 28.mar.2008
*
*/
但不是这个街区
/**
* This class represents ...
*
* and so on
*/
到目前为止,我有一个regexp:
^/\*\*(.|\s)+?\*/
哪个匹配块注释
但我需要在其中的某个地方添加一些条件(例如,阻止包含“@since”的注释)
我想关键是要用look aheads,但我的regex-fu目前还不太好
谁能帮我改进这个
提前谢谢
Bob因为Java注释不能嵌套(谢谢@Paŭlo),所以有一个正则表达式 您可以通过以下方式完成:
^/\*\*(?=(?:(?!\*/)[\s\S])*?@author: Bob)(?:(?!\*/)[\s\S])*\*/
解释如下:
^ # start-of-string
/\*\* # literal "/**" (start-of-comment)
(?= # begin positive look-ahead (...followed by)
(?: # begin non-capturing group
(?! # begin negative look-ahead (...not followed by)
\*/ # literal "*/"
) # end negative look-ahead
[\s\S] # anything, including newlines
)*? # end group, repeat non-greedily
@author: Bob # literal "@author: Bob"
) # end positive look-ahead
# ... now we have made sure there is "@author: Bob"
# before the end of the comment
(?: # begin non-capturing group
(?! # begin negative look-ahead
\*/ # literal "*/"
) # end negative look-ahead
[\s\S] # anything, including newlines (this eats the comment)
)* # end group, repeat
\*/ # literal "*/" (end-of-comment)
^#字符串开头
/\*\*#文字“/**”(开始评论)
(?=#开始积极地向前看(…然后是)
(?:#开始非捕获组
(?!#开始消极前瞻(…后面不跟)
\*/#文字“*/”
)#结束消极展望
[\s\s]#任何东西,包括换行符
)*?#结束组,不贪婪地重复
@作者:Bob#literal“@作者:Bob”
)#结束积极展望未来
#…现在我们已经确定有“@author:Bob”
#在评论结束之前
(?:#开始非捕获组
(?!#开始消极展望
\*/#文字“*/”
)#结束消极展望
[\s\s]#任何东西,包括换行符(这会吃掉注释)
)*#终端组,重复
\*/#文字“*/”(评论结束)
由于Java注释不能嵌套(感谢@Paŭlo),因此有一个正则表达式 您可以通过以下方式完成:
^/\*\*(?=(?:(?!\*/)[\s\S])*?@author: Bob)(?:(?!\*/)[\s\S])*\*/
解释如下:
^ # start-of-string
/\*\* # literal "/**" (start-of-comment)
(?= # begin positive look-ahead (...followed by)
(?: # begin non-capturing group
(?! # begin negative look-ahead (...not followed by)
\*/ # literal "*/"
) # end negative look-ahead
[\s\S] # anything, including newlines
)*? # end group, repeat non-greedily
@author: Bob # literal "@author: Bob"
) # end positive look-ahead
# ... now we have made sure there is "@author: Bob"
# before the end of the comment
(?: # begin non-capturing group
(?! # begin negative look-ahead
\*/ # literal "*/"
) # end negative look-ahead
[\s\S] # anything, including newlines (this eats the comment)
)* # end group, repeat
\*/ # literal "*/" (end-of-comment)
^#字符串开头
/\*\*#文字“/**”(开始评论)
(?=#开始积极地向前看(…然后是)
(?:#开始非捕获组
(?!#开始消极前瞻(…后面不跟)
\*/#文字“*/”
)#结束消极展望
[\s\s]#任何东西,包括换行符
)*?#结束组,不贪婪地重复
@作者:Bob#literal“@作者:Bob”
)#结束积极展望未来
#…现在我们已经确定有“@author:Bob”
#在评论结束之前
(?:#开始非捕获组
(?!#开始消极展望
\*/#文字“*/”
)#结束消极展望
[\s\s]#任何东西,包括换行符(这会吃掉注释)
)*#终端组,重复
\*/#文字“*/”(评论结束)
您不能简单地关闭对
@author
和@的解释吗,因为javadoc
有-nosince
选项可避免打印,因为块,默认情况下不包括@author
(需要-author
选项)
当然,如果您想混淆您自己没有编写源代码,请将其从源代码中删除。(但请确保这是在您获得的代码许可证范围内。)难道您不能简单地关闭@author
和@的解释吗,因为javadoc
有-nosince
选项可避免打印,因为块,默认情况下不包括@author
(需要-author
选项)
当然,如果您想混淆您自己没有编写源代码,请将其从源代码中删除。(但请确保这是在您获得的代码许可证范围内。)代码中的Java文档注释并不复杂,而且似乎有效。谢谢,您从何处获得了“Java注释可以嵌套”?在/*
之后,注释会转到下一个*/
,与任何/*
之间的注释无关。@Paŭlo:Hm,我希望它们是可嵌套的,所以我做了一个粗略的谷歌搜索,这似乎证实了这一点。我没有尝试(我不是一个真正的Java人)。谢谢你的更新,我会相应地修改我的答案。代码中的Java文档注释并不复杂,这似乎很有效。谢谢,你从哪里得到了“Java注释可以嵌套”?在/*
之后,注释会转到下一个*/
,与任何/*
之间的注释无关。@Paŭlo:Hm,我希望它们是可嵌套的,所以我做了一个粗略的谷歌搜索,这似乎证实了这一点。我没有尝试(我不是一个真正的Java人)。谢谢你的更新,我会相应地更改我的答案。嗨!谢谢你的提示,但是这个问题与JavaDoc的输出无关。问题是源代码中有很多关于@author:???的注释,我想去掉这些注释(不用坐在那里手动操作)您好!谢谢您的提示,但是这个问题与JavaDoc的输出无关。问题是源代码中有很多关于@author:???的注释,我想去掉这些注释(不用坐着几个小时手动完成)