如何编写正则匹配以public/private/protected function开头的最长行?
类方法行长匹配正则解决方案
可用正则
直接使用如下表达式即可,可按需修改末尾的长度阈值:
^(?=(?:public|private|protected) function).{100,}$
规则说明
(?=(?:public|private|protected) function)是正向先行断言,强制要求行首必须匹配三个访问修饰符加function的固定前缀,断言不会占用匹配字符位,不会干扰后续的整行长度统计.{100,}和你之前使用的逻辑一致,代表整行字符数≥100,调整这个数值即可控制筛选的行长阈值
兼容老旧引擎的替代写法
如果你使用的工具正则引擎不支持先行断言(比如部分低版本文本编辑器、grep旧版本),可以使用等价的简化写法:
^(?:public|private|protected) function.{78,}$
这个写法的长度阈值78是由总要求长度100减去最长前缀public function 的22个字符得来,最终效果和带断言的正则完全一致。
内容的提问来源于stack exchange,提问作者Jim Panse
相关产品推荐
相关产品推荐

