Regex Perl正则表达式:如何组合这两个正则表达式语句?
我正在尝试编写一个选择器,它过滤/删除注释(#)符号后的所有内容,但忽略字符串(“”或“”)中的#符号 因此,在下面的示例中,仅过滤/删除最后一行Regex Perl正则表达式:如何组合这两个正则表达式语句?,regex,perl,selector,Regex,Perl,Selector,我正在尝试编写一个选择器,它过滤/删除注释(#)符号后的所有内容,但忽略字符串(“”或“”)中的#符号 因此,在下面的示例中,仅过滤/删除最后一行 "#dummy comment" asd asd ' abc # dummy comment' abc #real comment 以下是我迄今为止提出的两个正则表达式选择器(稍后我将添加s/标记): 我目前正努力加入这两条评论,以实现上述结果。我试过使用正向和反向查找,但似乎无法正确使用。任何建议都将不胜感激 这个简单的方法怎么样 首先删除双引号
"#dummy comment" asd asd
' abc # dummy comment'
abc #real comment
以下是我迄今为止提出的两个正则表达式选择器(稍后我将添加s/标记):
我目前正努力加入这两条评论,以实现上述结果。我试过使用正向和反向查找,但似乎无法正确使用。任何建议都将不胜感激 这个简单的方法怎么样
#
后面的子字符串#!/usr/bin/perl
use strict;
use warnings;
while (<DATA>) {
chomp;
s/['"][^'"]*['"]//g;
if (m/#(.*)/) {
print "$1\n";
}
}
__DATA__
"#dummy comment" asd asd
' abc # dummy comment'
abc #real comment
#/usr/bin/perl
严格使用;
使用警告;
而(){
咀嚼;
s/['“][^']*['”]//g;
如果(m/#(.*)/){
打印“$1\n”;
}
}
__资料__
“虚拟评论”asd asd
“abc#虚假评论”
abc#真实评论
如果你希望编写一个程序,可以从Perl代码中删除注释,那么我认为你是在浪费时间。你必须考虑诸如“代码> $String=Sy/s//y/g/g,<代码> >代码> >我的$i(0…$数组){}…
,可能还有其他几个。如果您希望编写一个程序来删除Perl代码中的注释,那么该程序已经编写好了。请使用。不确定为什么它被搁置,问题主要是加入两个语句,而不仅仅是删除注释。很抱歉,听起来像个noob,但是如果我已经将数据存储在s中单变量/string$str而不是数据文件,那么我该如何使用上面的while循环。我自己尝试过,但得到了一个无限循环。谢谢:D@SimpsonDanny然后,您可以在执行循环时删除该,使用类似$str=~s/['''“[^']*[''”]//g;如果$str=~m/#(.*)/,则打印“$1\n”谢谢,我想我的方向是对的。
#!/usr/bin/perl
use strict;
use warnings;
while (<DATA>) {
chomp;
s/['"][^'"]*['"]//g;
if (m/#(.*)/) {
print "$1\n";
}
}
__DATA__
"#dummy comment" asd asd
' abc # dummy comment'
abc #real comment