2011-10-30 6 views
1

투자 클럽 프로젝트를 위해 아래에있는 것과 같은 문자열이 있습니다. (그리고 저는 비 전문가입니다).문자열에서 기호 추출하기

가능한 문자열 : 나는 심볼이 1-4 문자 (예 : $ V, $ GOOG, $ VMW 수 위의 라인 및 기타 유사한 문자열에서 "EXPE", "V", "HPQ"을 추출 할

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

) 등

회사 기호가 고정 길이 인 경우에만 추출 할 수 있습니다 (예 : 포인터)?

+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 A-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

관련 문제