[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 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

回复 16# idwma
多谢大佬, 可以正确输出, 和前面那个原理一样吗? 只是精简了一下吗

TOP

本帖最后由 小白龙 于 2023-5-27 18:04 编辑

回复 16# idwma

$s = gc -Path "$HOME\Desktop\abc.txt"

用gc获取文件中的字符串, 多行的结果不正确 ,并在一行了, 把字符串写在代码中没事
  1. $s = @'
  2. using System;
  3. public class xx
  4. {
  5. public static void Main()
  6. {
  7. string s = "xzc abc(s \"(abc)\")); dfg()";
  8. string s = "xzc abc(s \"(abc)\")); dfg()";
  9. string p = @"}";
  10. string p = @"}";
  11. string p = @"}";
  12. string s = "xzc abc(s \"(abc)\")); dfg()";
  13. }
  14. public static string hello(string s, string p)
  15. {
  16. string fullMatch = match.Value;
  17. }
  18. }
  19. public class zz
  20. {
  21. public static void Main()
  22. {
  23. string s = "xzc abc(s \"(abc)\")); dfg()";
  24. string p = @"}";
  25. }
  26. public static string hello(string s, string p)
  27. {
  28. string fullMatch = match.Value;
  29. }
  30. }
  31. '@
复制代码

TOP

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

TOP

回复 19# idwma

多谢提醒, 加了一个-raw就可以了

TOP

回复 19# idwma

大佬, 新的这个正则的执行速度比前面的那个要快多了

TOP

返回列表