[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 idwma 于 2023-5-26 18:55 编辑
  1. function getFuncText($a,$b){
  2. if(!$b){$b='\S+'}
  3. $r='(?<a>\n\s*)(private|public|static|async|(?<b>(\b\S+|\([^()]+\))\s*))*(?<c>'+$b+'\s*(\([^)]*\))*\s*\{\n(?>(?<d>\s*(private|public|static|async|(?<b>(\b\S+|\([^()]+\))\s*))*(?<c>'+$a+'\s*(\([^)]*\))*\s*\{(?>[^{}\/\x22\x27]+|\/\/[^\n]+|/\*(\n|.)*?\*/|[\x22][^\x22]*[\x22]|[\x27][^\x27]*[\x27]|[^{}]|\{(?<DEPTH>)|\}(?<-DEPTH>))*?(?(DEPTH)(?!))\}))|[^{}\/\x22\x27]+|\/\/[^\n]+|/\*(\n|.)*?\*/|[\x22\x27](\n|.)*?[\x22\x27]|[^{}]|\{(?<DEPTH>)|\}(?<-DEPTH>))*?(?(DEPTH)(?!))\})'
  4. [regex]::Matches($s, $r).groups|?{$_.name -eq 'd'}|%{$_.captures.value}
  5. }
复制代码

TOP

回复 3# 小白龙


    测过是有的

TOP

回复 5# 小白龙


    用win7 5.1测了也是有的

TOP

  1. function getFuncText($a, $b)
  2. {
  3. if (!$b) { $b = '\S+' }
  4. $r = '(?<a>\r?\n\s*)(private|public|static|async|(?<b>(\b\S+|\([^()]+\))\s*))*(?<c>' + $b + '\s*(\([^)]*\))*\s*\{(?>(?<d>(\r?\n\s*)(private|public|static|async|(?<b>(\b\S+|\([^()]+\))\s*))*(?<c>' + $a + '\s*(\([^)]*\))*\s*\{(?>[^{}\/\x22\x27]+|\/\/[^\n]+|/\*(\r?\n|.)*?\*/|[\x22][^\x22]*[\x22]|[\x27][^\x27]*[\x27]|[^{}]|\{(?<DEPTH>)|\}(?<-DEPTH>))*?(?(DEPTH)(?!))\}))|[^{}\/\x22\x27]+|\/\/[^\n]+|/\*(\r?\n|.)*?\*/|[\x22\x27](\r?\n|.)*?[\x22\x27]|[^{}]|\{(?<DEPTH>)|\}(?<-DEPTH>))*?(?(DEPTH)(?!))\})'
  5. [regex]::Matches($s, $r).groups | ?{ $_.name -eq 'd' } | %{ $_.captures.value }
  6. }
复制代码

TOP

回复 10# 小白龙
  1. function getFuncText($a, $b)
  2. {
  3. if (!$b) { $b = '\S+' }
  4. $r = '(?<a>\r?\n\s*)(private|public|static|async|(?<b>(\b\S+|\([^()]+\))\s*))*(?<c>' + $b + '\s*(\([^)]*\))*\s*\{(?>((\r?\n\s*)(private|public|static|async|(?<b>(\b\S+|\([^()]+\))\s*))*(?<c>' + $a + '\s*(\([^)]*\))*\s*\{\s*(?<d>(?>[^{}\/\x22\x27]+|\/\/[^\n]+|/\*(\r?\n|.)*?\*/|[\x22][^\x22]*[\x22]|[\x27][^\x27]*[\x27]|[^{}]|\{(?<DEPTH>)|\}(?<-DEPTH>))*?(?(DEPTH)(?!)))\}))|[^{}\/\x22\x27]+|\/\/[^\n]+|/\*(\r?\n|.)*?\*/|[\x22\x27](\r?\n|.)*?[\x22\x27]|[^{}]|\{(?<DEPTH>)|\}(?<-DEPTH>))*?(?(DEPTH)(?!))\})'
  5. [regex]::Matches($s, $r).groups | ?{ $_.name -eq 'd' } | %{ $_.captures.value }
  6. }
复制代码
1

评分人数

TOP

回复 12# 小白龙


    不太清楚碰上了再改

TOP

回复 14# 小白龙
  1. function getFuncText($a, $b)
  2. {
  3. if (!$b) { $b = '\S+' }
  4. $c='private|public|static'
  5. $d='[^{}\/\x22\x27\r\n]+|\/\/[^\r\n]+|/\*.*?\*/|[\x22][^\x22]*[\x22]|[\x27][^\x27]*[\x27]|[^{}]|\{(?<DEPTH>)|\}(?<-DEPTH>))*?(?(DEPTH)(?!))'
  6. $r = '(?s)('+$c+'|\s+)*class\s+'+$b+'\s*\{(?>('+$c+'|void|\s+)*'+$a+'\s*(\([^)]*\))*\s*\{\s*(?<d>(?>'+$d+')\}|'+$d+'\}'
  7. [regex]::Matches($s, $r).groups | ?{ $_.name -eq 'd' } | %{ $_.captures.value }
  8. }
复制代码

TOP

本帖最后由 idwma 于 2023-5-27 15:07 编辑

还可以试试这个
  1. function getFuncText($a, $b)
  2. {
  3. if (!$b) { $b = '\S+' }
  4. $r = '(?s)public\sclass\s'+$b+'\s*\{.+?(private|public|static|void|\s+)*'+$a+'\s*(\([^)]*\))*\s*\{\s*(?<d>(?>[^{}\/\x22\x27\r\n]+|\/\/[^\r\n]+|/\*.*?\*/|[\x22][^\x22]*[\x22]|[\x27][^\x27]*[\x27]|\r?\n|\{(?<DEPTH>)|\}(?<-DEPTH>))*?(?(DEPTH)(?!)))\}'
  5. [regex]::Matches($s, $r).groups | ?{ $_.name -eq 'd' } | %{ $_.captures.value }
  6. }
复制代码

TOP

回复 17# 小白龙
是什么地方不懂
回复 18# 小白龙
gc得到的是数组,要转成字符

TOP

返回列表