我想在sed或perl或awk上使用正则表达式 存储在文件中的以下代码行,例如file.txt:
if(url == "https://abcd.com"){
if(p=123){System.out.println("url is https://....(OK?)); }
else{
//do nothing!
}
c=1;
}
,并希望清空外部if语句的内容并保留花括号,以便输出为:-
if(url == "https://abcd.com"){}.
有可能吗?
答案 0 :(得分:0)
这取决于外括号内代码的任意性。例如,以下是可能性:
if (....) {
c = '{';
// this is a mismatched brace: {
}
为应对这种可能性,您可能需要解析相关语言而不是正则表达式的内容。
答案 1 :(得分:0)
以下perl代码可以满足您的要求
$/ = undef;
my $data = <>;
if( $data =~ /if\(url == \"https:\/\/abcd.com\"\)\{(.+)\}/ms ){
$inside = $1 ;
$data =~ s/\Q$inside\E//ms ;
}
print $data ;
但是,如果在示例末尾有更多代码包含花括号,则可能会失败,因为它正在寻找最后一个花括号并提取目标if语句和最后一个花括号之间的所有内容。