有這麼一道題。。web
- aaa
- bbb
- #if defined(__MMI_DEL__)
- ccc
- #endif
- ddd
- eee
- #if defined(__MMI_DEL__)
- fff
- ggg
- #endif
- hhh
- aaa
- bbb
- #if defined(__MMI_DEL__)
- ccc
- #endif
- ddd
- eee
- #if defined(__MMI_DEL__)
- fff
- ggg
- #if defined(__EX222__)
- KKK
- #if defined(__EX222__)
- woshi
- #endif
- LLLL
- #endif
- #endif
- sdffff
- #if defined(__EX222__)
- sdfsdf
- sdff
- #endif
- sdfdsf
- #!/usr/bin/perl
- use strict;
- use warnings;
- my (@arr,$re,$line,@tmp);
- while(<DATA>){
- chomp;
- s/#if\s*defined.*?$/(/g; #這裏替換成(和)方便匹配
- s/#endif/)/g;
- push @arr,$_;
- }
- $line .= "$_\_" for @arr;
- #print $line;
- $re = qr/(?>[^()]+|\((??{$re})\))*/;
- while($line =~ /(\w*)\($re\)(\w+)/g){
- push @tmp,split/\_/,"$1$2";
- }
- print join("\n",@tmp);
- __DATA__
- aaa
- bbb
- #if defined(__MMI_DEL__)
- ccc
- #endif
- ddd
- eee
- #if defined(__MMI_DEL__)
- fff
- ggg
- #if defined(__EX222__)
- KKK
- #if defined(__EX222__)
- woshi
- #endif
- LLLL
- #endif
- #endif
- sdffff
- #if defined(__EX222__)
- sdfsdf
- sdff
- #endif
- sdfdsf
output:正則表達式