2011-10-30 11 views
1

私は投資クラブプロジェクトのために、以下のような文字列をいくつか持っています(私は非専門家です)。文字列から記号を抽出する

可能な文字列:

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

私は上記の行と記号は1-4文字(例えば$ V、$ GOOG、$ VMW可能性があり、他の類似文字列から"EXPE""V""HPQ"を抽出したいです)など

会社のシンボルが固定長であれば抽出できます。

+0

「行頭」のシンボルは '^'です。文字クラスは '[A-Z]'のように表記されます。そして可変長の数量子は '{1,4}'のように表記されています。 –

+0

なぜPerlでなければならないのですか?または、正規表現を使用しますか?つまり、 'cut -d '-f1 stock'を使うことができないのはなぜですか? – 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-zの文字を大文字4に続く文字列の先頭から$を探します。

あなたは{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

関連する問題