使用powershell,我如何编写一个正则表达式,将提取C++类的定义。
这个powershell脚本
$source =
"class Node_A { `n" +
"public: `n" +
" Node_A(); `n" +
" int foo( int a ) { `n" +
" return a * b; `n" +
" } `n" +
" int b; `n" +
"}; `n" +
" `n" +
"class Node_B { `n" +
"public: `n" +
" Node_B(); `n" +
" int foo( int a ) { `n" +
" return a + b; `n" +
" } `n" +
" int b; `n" +
"}; "
$to_find = "(?sm)(class Node_. {[^;]+;)"
$source |
select-string $to_find -AllMatches |
foreach { $_.Matches } |
foreach { $_.Value }
会发现这个
class Node_A {
public:
Node_A();
class Node_B {
public:
Node_B();
如何使脚本匹配};
而不仅仅是;
1条答案
按热度按时间tzxcd3kk1#
下面的模式将适用于有问题的字符串,尽管如注解中所述,如果你想要一种健壮的方法来提取类,你应该寻找一个C++ AST解析器。值得注意的是,由于这是一个多行正则表达式模式,输入必须是一个多行字符串,否则它将失败。有关模式详细信息,请参见https://regex101.com/r/0AoW8R/1。
使用所讨论的输入字符串,输出变为: