2010-08-21 2 views
2

나는 <name>과 같은 문자열을 가지고 있습니다. <>을 잘라 내고 name만을 꺼내 변수에 넣을 수 있습니다.주변을 제거하기 위해 문자열을 나누기 < and > 문자

perl "split"기능을 사용하는 방법은 무엇입니까?

+0

같은 : 또는

my($var) = $input =~ /<(.*?)>/; 

그냥이 중 하나를 사용하여 브래킷을 제거 할 수 있습니다 : 당신은리스트 문맥에서 원하는 부분을 캡처 어디 일치하는 몇 가지 단계에서 그것을 할 것 언어를'perl'로 지정 했으므로, 질문에 태그를 추가했습니다. "언어 x"전문가가 귀하의 질문을 찾고 답변을 돕는 것처럼 도움이 될 것입니다. =) – Rob

+1

Regex도 다음과 같이 사용할 수 있습니다 : <([^>]), it 당신에게 이름 만 줄 것입니다. –

+3

왜 분할을 사용 하시겠습니까? 최선의 방법으로 작업을 수행하고 싶지 않으십니까? –

답변

1

당신은 목록 컨텍스트에서 정규식과 일치를 사용할 수 있습니다

my $s = "<name>"; 
my ($name) = $s =~ /<(.*)>/; 
+0

이 방법은 매우 완벽하게 작동하는데 매우 유용합니다 ... 감사의 친구 .. 사용 "/ <(\S*)> /"... –

+3

그럴 경우를 위해서 * 욕심이없는 수량 한정 기호를 원할 것입니다. –

+1

또는'/ <([^>] *)> /'를 사용하여 ('perl'과 미래 코드 독자 모두에게) * 모든 문자가 아닌 * '-'> * 문자를 사용하도록 명시하십시오 all * (정규 표현식에서 '.'이 의미하는 것)입니다. –

-2

난 당신이 그것에 대해 분할 ...를 사용 싶어하는 이유도 모르겠지만 여기 간다 :

당신이 다음 분할을 수행 할 수 있습니다 사용하여 작업을 수행하는 방법에 대한 질문에 대한 답변에서
> perl -le'$str="<string>";print split("<",(split(">",$str))[0]);' 
string 
+0

왜'split (/ [<>] /, $ str)'이 필요하지 않습니까? – Dummy00001

-1

이 작업을 수행 :

$input ="<string>"; 
print split(/[<>]/,$input); 

Click for live example

이 더 좋은 방법은 그러나 것

$input = "<string>"; 
print $input =~ /<(.*)>/; 

Click for live example

+1

왜 정규 표현식에서','? – Dummy00001

+0

왜냐하면 나는 바보 야! 수정 됨 - 감사합니다. – Martin

6

split를 사용하지 마십시오. 그것은 손톱을 망치로 드라이버의 잘못된 끝을 사용하는 것과 같습니다.

$input =~ tr/<>//; 
$input =~ s/[<>]//g; 
관련 문제