regex - Perl 正则表达式 : how do I combine these 2 regex statements?

标签 regex perl selector

<分区>

我正在尝试编写一个选择器,它过滤掉/删除注释 (#) 符号后的所有内容,但忽略字符串中的 # 符号(""或 '')

所以在下面的例子中只有最后一行会被过滤/删除

"#dummy comment" asd asd
' abc # dummy comment'
abc #real comment

这是我到目前为止想出的两个正则表达式选择器(我稍后会添加 s/标签):

/('|").*#.*('|")/g        --> selects fake commnts

/#(?!!).+/g   ---> highlights all comments, including above ones (?!! is to ignore #!/usr/bin/env perl ) 

我目前正在努力加入这两个评论以实现上述结果。我试过使用正向和反向查找,但似乎无法做到这一点。任何建议都将不胜感激。

最佳答案

这个简单的方法怎么样?

  1. 首先删除双引号或单引号之间的所有子字符串
  2. 通过简单的正则表达式cpature提取#后的子串

这是您的示例输入的测试程序:

#!/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

关于regex - Perl 正则表达式 : how do I combine these 2 regex statements?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23244723/

相关文章:

javascript - 使用简单的 jQuery 选择器

jquery - 如何获取div中所有下拉列表的所有选定值的数组

css - HTML 文件中所有按钮类型的最佳选择器组

python - "a:b"的正则表达式

C# 正则表达式 : Capture everything up to

ruby - 是否有类似 Perl 的 LWP for Ruby 的模块?

c - 在 Windows 中,与 C 程序一起执行的 Perl 代码将错误的字节长度写入内存

perl - 如何将 Perl 代码从 mod_perl 移植到 FastCGI?

c# - 使用正则表达式从字符串中提取坐标的更好方法

CSS双类属性的Java正则表达式匹配