找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
楼主: 小白龙

[问题求助] PowerShell正则平衡组判断是否嵌套

[复制链接]
发表于 2023-5-22 22:12:46 | 显示全部楼层
本帖最后由 jyswjjgdwtdtj 于 2023-5-22 22:16 编辑

来个很low的
f = False
j = ""
For Each i In Split(code,vbCrLf)
If i = "public class cs" Then
f = True
j = i
Else
j = j + vbCrLf + i
If f = True And i = "}" Then Exit For
End If
Next
If InStr(j,"public string cd(") > -1 Then MsgBox "cd在cs里"

如果你的缩进做的很好的话……
发表于 2023-5-23 20:47:37 | 显示全部楼层
再改一下10楼的用命名组合并到一条正则里,不用过两次了
  1. $r='(?<a>\n\s*)(private|public|static|async|(?<b>(\b\S+|\([^()]+\))\s*))*(?<c>class\s+cs\s*(\([^)]*\))*\s*\{(?>[^{}\/\x22\x27]+(?<d>cd|abc)(\s*\([^)]*\))*|[^{}\/\x22\x27]+|\/\/[^\n]+|/\*(\n|.)*?\*/|[\x22\x27](\n|.)*?[\x22\x27]|[^{}]|\{(?<DEPTH>)|\}(?<-DEPTH>))*?(?(DEPTH)(?!))\})'
  2. [regex]::Matches($s, $r).groups|?{$_.name -eq 'd'}|%{$_.captures.value}
复制代码

评分

参与人数 1技术 +1 收起 理由
小白龙 + 1 乐于助人

查看全部评分

 楼主| 发表于 2023-5-26 17:29:50 | 显示全部楼层
本帖最后由 小白龙 于 2023-5-26 17:45 编辑

回复 17# idwma

刚看到, 多谢大佬   

大佬能帮看看这个吗? 这个太综合 , 把以前的正则都利用起来了
http://www.bathome.net/thread-66246-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:11 , Processed in 0.017684 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表