module_nameとinstance_nameを抽出したいVerilog / System Verilogファイルがあります。
次の1行から:
module_name#(.ANY_PARAMETER(.ANY_PARAMETER)、.ANY_PARAMETER_1(.ANY_PARAMETER_1))インスタンス名(.any_connection(any_connection));
出力は次のようになります。
モジュール名インスタンス名
どうすればいいですか?
ベストアンサー1
私たちはバランスをとり、中かっこが入れ子になった状況に対処する必要がありますrecursive regex
。
最初に角かっこ「(」で始まる正規表現を作成し、角かっこでは$r
ないコンテンツ(*のために存在しない可能性があります)を見つけて、角かっこではないコンテンツをもう一度繰り返し、最後に閉じる角かっこのバランスをとります。
$ perl -lne '
$r = qr/\( [^()]* (?:(??{ $r }) [^()]*)* \)/x;
print $1 =~ y/\t #//dr while /\G([^()]*) $r/xg;
' file.sv
結果:
module_name
instance_name