Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex删除包含特定单词的Java注释块_Regex_Replace_Javadoc - Fatal编程技术网

Regex删除包含特定单词的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,

我正在尝试删除包含特定Java文档注释的注释

我想删除这个评论块

/**
 * @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:???的注释,我想去掉这些注释(不用坐着几个小时手动完成)