2011-10-30 192 views
1

对于投资俱乐部项目(我是非技术人员),我有一些字符串,比如下面的字符串。从字符串中提取符号

可能的字符串:

$EXPE - Analysts' Actions: TZOO, MSFT, GOOG, .... 
$V - Analysts' Actions: TZOO, MSFT, GOOG, .... 
$HPQ - Analysts' Actions: TZOO, MSFT, GOOG, ... 

我想提取"EXPE""V""HPQ"从上面的行和其他类似的字符串其中符号可以是1-4个字符(例如$ V,$ GOOG,$ VMW )等。

我只能提取公司符号是否为固定长度 - 任何指针?

+0

“开始行”符号是'^'。字符类用'[A-Z]'来表示。和变长数量符号是这样写的:'{1,4}'。 –

+0

为什么它必须是Perl?或使用正则表达式?那就是,为什么你不能使用'cut -d''-f1股票'? – Johnsyweb

回答

1

这种提取从线

# you also need to check word boundaries. 
my @symbols = $string =~ m/(\b[A-Z]{1,4}\b)/g 

所有符号很明显,我不能正确读取的问题。

my $symbol = $string =~ /\$([A-Z]+)/; 

其他是正确的。

+0

解析错误:语法错误,意外' /'..以下是我试过 $ linesymbol =〜/ \ $([AZ] +)/; – ChicagoDude

2

试试这个:

^\$([A-Z]{1,4}) 

这看起来对$从字符串,然后1到4大写字母A-Z字符开头。

你可以阅读更多关于{1,4}量词这里等元字符:http://www.regular-expressions.info/reference.html

+0

解析错误:语法错误,意外的'^' – ChicagoDude

+0

$ linesymbol =〜m/^ \ $([AZ] {1,4})/ g; ..那就是我试过 – ChicagoDude

+0

如果删除字符串的开始元字符,'^'? – Marcus

1
my $string = q<$EXPE - Analysts' Actions: TZOO, MSFT, GOOG>; 
my ($company_symbol) = $string =~ /^\$([A-Z]{1,4})/; 
print "got $company_symbol from $string\n"; 
+0

谢谢..试图看看什么是语法..因为我得到这个时候尝试它“解析错误:语法错误,意外'/'” – ChicagoDude

+0

这不是一个Perl错误消息 – ysth