Jef*_*rey 10 regex eclipse replace javadoc multiline
我正在尝试编写一个与(non-javadoc)格式中的注释匹配的正则表达式
/*
* (non-javadoc)
*
* some other comment here
*
*/
Run Code Online (Sandbox Code Playgroud)
到目前为止,我有(?s)/\*\R.*?non-Javadoc.*?\*/,但实际上匹配太多了.我的文件顶部有一个标题,类似于
/*
* header text
*/
public class MyClass {
}
Run Code Online (Sandbox Code Playgroud)
它匹配/*文件顶部,但我真的只想匹配生成的(non-javadoc)注释.任何人都可以帮我修复这个正则表达式吗?
编辑:我正在尝试使用Eclipse查找/替换对话框,但如果需要,我愿意使用外部工具.
Ala*_*ore 11
这应该这样做:
(?s)/\*[^*](?:(?!\*/).)*\(non-javadoc\)(?:(?!\*/).)*\*/
Run Code Online (Sandbox Code Playgroud)
/\*[^*]匹配C样式注释(/* */)的开头,但不匹配JavaDoc注释(/** */)
(?!\*/).匹配任何单个字符,除非它是*/序列的开头.搜索(?:(?!\*/).)*而不是.*?让匹配在一个评论中开始并在另一个评论中结束.
更新:对Jacek评论的(迟来的)回复:是的,你可能想要在正则表达式的末尾添加一些东西,这样你就可以用空字符串替换它,而不是在你的代码中留下很多空白行.但Jacek的解决方案比它需要的更复杂.你需要添加的是\s*
该\R转义序列多种换行符,包括Unicode行分隔(匹配\u2028)和段落分离器(\u2029)和DOS /网络回车换行符+序列(\r\n).但这些都是空白字符,所以\s匹配它们(在Eclipse中,至少;根据文档,它相当于[\t\n\f\r\p{Z}]).
将\s*在亚采的加料只是为了匹配任何水平的空白可能存在(空格或制表符)之前的换行,加上其后的压痕.(你必须删除它,因为你没有在评论的第一行之前删除缩进.)但事实证明它\s*可以完成整个工作:
(?s)/\*[^*](?:(?!\*/).)*\(non-javadoc\)(?:(?!\*/).)*\*/\s*
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1967 次 |
| 最近记录: |