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