我是 Perl 新手,需要一些 Perl 正则表达式帮助。我想从只能包含大写字符和/或数字和下划线字符(在单词的开头或结尾或中间)的文件中提取单词。单词的分隔符可以是空格或任何其他非大写、非数字、非下划线。
3个例子:
abcd _PARAM123="dfd"; (I want to extract _PARAM123)
abcd PARAM2_:12; (I want to extract PARAM2_)
abcd PARA_M-1; (I want to extract PARA_M)
你可以
my @words = $str =~ /( [A-Z_] [0-9A-Z_]+ )/xg;
由于您尚未回复我的上一个查询,我将假设一个单词如果只有数字(和/或下划线)则不算作一个单词,例如12并且1_2不被视为单词。
在这种情况下,我建议使用这个正则表达式:
(?=[0-9_]*[A-Z])\b[A-Z0-9_]+\b
(?=[A-Z0-9_]*[A-Z])是一个积极的前瞻,并确保正则表达式中至少有一个大写字符。如果您认为1_2是一个词,请(?=[A-Z0-9_]*[A-Z_])改用。
\b是一个单词边界,确保您要查找的单词没有小写字符。
[A-Z0-9_]A-Z是一个字符类,将匹配(大写字母)、0-9(数字)和下划线范围内的任何字符。
+表示前一个组或字符可以出现 1 次或多次。