我已经构建了一个angular1应用程序,它在许多控制器中都有成千上万的方法,等等。在开发过程中,我在创建docs注释时并不太小心。我花了一晚上的时间来修改格式,以便再次生成文档。
现在我收到一条错误消息:Don't know how to format @ngdoc: method。我从其他类似的问题中了解到,当@methodOf属性丢失时,这种情况会发生(或可能发生)。错误消息没有说明这是在哪里发生的。
因此,我想使用IDE (PhPStorm)搜索函数和正则表达式找到所有未正确格式化的ngdoc注释。
这是我想出的当前表达式:
\/\*\*\s*\n\s\*\s@ngdoc method\n(\s\*.*(?<!methodOf)\n)*\s\*\/
从这些评论中,我想找到第二个,只是:
/**
* @ngdoc method
* @name app.admin:AuditLogController#auditsWatch
* @methodOf app.admin:AuditLogController
*/
/**
* @ngdoc method
* @name app.admin:AuditLogController#auditsWatch
*/
/**
* @name app.admin:AuditLogController#auditsWatch
*/在这里测试它:https://regex101.com/r/wfIiZJ/1
因此,基本上我希望它能找到任何评论,以/**和@ngdoc method开头,以*/结尾,在中间没有methodOf。
我来得最近的,是这个:\/\*\*\s\n*.*(?!methodOf)\n*.*\n\s\*\/ https://regex101.com/r/qpt8G7/1
我会继续努力,但也许有人有解决方案,并愿意分享。这里的任何帮助都是非常感谢的!
发布于 2017-03-14 23:16:20
您可以在这里使用https://stackoverflow.com/a/37343088/3832970:
(?s)\/\*\*\s*\*\s*@ngdoc method\n(?:(?!\*\/|methodOf).)*\s\*\/
^^^^^^^^^^^^^^^^^^^^^^^ 模式匹配:
(?s) -使.能够匹配换行符\/\*\* -一个文字/**子字符串\s*\*\s* --一个包含0+白空间的*@ngdoc method\n -文字@ngdoc method子字符串后面跟着换行符(?:(?!\*\/|methodOf).)* -匹配任意字符、0或更多次(这不是*/文本字符序列或methodOf子字符串的起点)的经过调整的贪婪令牌。\s -一个空白\*\/ -一个*/文字字符序列。请注意,如果在LF之前可能有CR,则可以考虑使用\R或\r?\n来匹配换行符。
发布于 2017-03-14 23:10:22
好吧,在我贴出问题并从一开始就想清楚之后,我就找到了解决办法。
正则表达式如下所示:(\/\*\*\s*\n\s*\*\s@ngdoc method\n)(((\s\*\s)(?!@methodOf).*\s*\n)*)\s*\*\/ https://regex101.com/r/Ep50XQ/1/
我把它分成几组。
(\/\*\*\s*\n\s*\*\s@ngdoc method\n)发现
/**
* @ngdoc method任何记录方法的注释。
(\s\*\s)处理一个新的注释行,包括一个可能的空格,一个*,后面跟着更多的空格。
这就是我之前遇到的罪魁祸首。我需要知道当前游标的位置。
(?!@methodOf)确保行不以@methodOf开头,(((\s\*\s)(?!@methodOf).*\s*\n)*)确保注释中的行(不以@methodOf开头)可以有除(.*)以外的任何字符,可能还有一些空格(\s),并以行中断结尾。这可以重复任何次数(*)。
最后一部分
\s*\*\/是:*/,它结束注释块和正则表达式。
谢谢你,StackOverflow,帮我思考。也许它能帮到别人。
https://stackoverflow.com/questions/42798057
复制相似问题