本帖最后由 小白龙 于 2023-5-21 08:41 编辑
我想利用powershell正则平衡组取下面红色字部分
现在正则存在两个问题
1. 只能匹配前两个, 而且会输出整个匹配, 我想只输出类名, 即: class后面的 文本
2. 最下面那个无法匹配到, 因为 class 后面 接着的文本后面, 不是直接出现的 { 怎样修改正则, 也适应这种情况?
求精通正则大佬指导, 谢谢
我需要的脚本执行后的结果:
Azzz
Bxx
Cwww
-------------------------------------------
using System;
class Azzz
{
//A
}
public class Bxx {
//B
}
internal class Cwww : Form
{
//C
}- $s = @'
- using System;
-
- class Azzz
- {
- //A
- }
-
- public class Bxx {
- //B
- }
-
- internal class Cwww : Form
- {
- //C
- }
- '@
-
- $regex = '.* ([a-zA-Z0-9_]+)\s*\{(?:[^{}]+|\{(?<DEPTH>)|\}(?<-DEPTH>))*?(?(DEPTH)(?!))\}'
-
- #[regex]::Matches($s, $regex).value #完全匹配
-
- #_1_ 怎样只输出每个匹配的类名
- [regex]::Matches($s, $regex).groups.value
-
- #_2_ 最后那个匹配,怎样输出 Cwww
复制代码
|