Regex 如何在双引号或单引号中拆分不显示任何内容的字符串?

Regex 如何在双引号或单引号中拆分不显示任何内容的字符串?,regex,perl-data-structures,Regex,Perl Data Structures,我从文本文件中获取行,然后需要将它们拆分为单词。所以单引号或双引号中的所有内容都应该被忽略。 例如:使用线条;“$var”,打印‘注释’:“获取‘注释%2’” 应作为use、line、print插入数组中。其他的都被忽略了。 我还需要检查%是否位于单引号或双引号内(如上面的示例中) my@array=$file\u line=~/[\$A-z\]{2,}/g给出了所有的单词(加上任何包含$的单词),但我不能忽略引号中的字符 有什么想法吗 谢谢您可以先删除所有引用的单词,例如使用: $line =

我从文本文件中获取行,然后需要将它们拆分为单词。所以单引号或双引号中的所有内容都应该被忽略。 例如:使用线条;“$var”,打印‘注释’:“获取‘注释%2’” 应作为use、line、print插入数组中。其他的都被忽略了。 我还需要检查%是否位于单引号或双引号内(如上面的示例中)

my@array=$file\u line=~/[\$A-z\]{2,}/g给出了所有的单词(加上任何包含$的单词),但我不能忽略引号中的字符

有什么想法吗


谢谢

您可以先删除所有引用的单词,例如使用:

$line =~ s/ ( ["'] ) .*? \1 //xg;

根据处理嵌套引号、未闭合引号等的方式,您可能需要对其稍作更改。

我同意您可以先删除引用的单词的答案 使用

但是,您应该知道您的正则表达式

[\$A-z_]
[\$A-Za-z_]
拾取“A”和“z”之间的所有ASCII字符,尤其是, 以下标点符号:

[ \ ] ^ _ `
因此,您应该在正则表达式中更加显式

[\$A-z_]
[\$A-Za-z_]
或者您应该在替换中添加不区分大小写的标志“i” 在正则表达式中只使用一个大小写:

$file_line =~ /[\$A-Z_]{2,}/gi;
可能重复的