2012-04-02 5 views
-5

내가 가진이 같은 문자열 :Perl의 키워드를 제외한 모든 문자열을 제거하려면 어떻게해야합니까?

component.kw1_tap/rt (path/to/file1/kw1) (path/to/file2/kw2) 

내가 원하지 않는 문자를 제거하고 같은 깨끗한 문자열을 생산할 수 있어요 :

component kw1 tap rt path to file1 kw1 path to file2 kw2 

지금 내가 kw1 및 kw2을 제외한 모든 것을 제거 할을, 내 마지막 문자열은 다음과 같아야합니다.

kw1 kw2 

고맙습니다.

EDIT : 문자열이 변경 될 수 있으며 키워드의 위치 (kw)도 변경 될 수 있습니다.

+0

내가 부정적인 평가되고 마음을하지 않지만 그것은 조금 현실과에서 배울 수있는 무엇인가 만드는 이유 주어진다면. – infinitloop

+1

말해봐, 컴퓨터가 어떻게'kw1'과'kw2'가 무엇인지 알아야할까요? 그들은 항상 동일하게 될 것인가, 항상 주위에있는 것이 동일 할 것인가 ...? 그것이 당신이 질문에 포함시켜야 할 어떤 종류의 정보입니다. – cHao

+0

죄송합니다. 여기 혼란 스러울 경우 kw1/kw2는 내가 찾고있는 키워드 일뿐입니다. 문자열은 물론 변경 될 수 있습니다. – infinitloop

답변

2

문자열의 나머지 단어에는 적용되지 않는 kw1kw2에 대한 특별한 정보가 없기 때문에 긴 글입니다.

아마도이 기능이 유용할까요?

use 5.12.0; 

my $s = 'component.kw1_tap/rt (path/to/file1/kw1) (path/to/file2/kw2)'; 

my @keywords = $s =~ m|([^/]+?)\s*\)|g; 

say for @keywords; 

출력

kw1 
kw2 

EDIT가

는 문자열이 현재 위치에서 수정되어야하는 것이 중요하면,이 코드는 동일한 기술을 사용

use 5.12.0; 

my $s = 'component.kw1_tap/rt (path/to/file1/kw1) (path/to/file2/kw2)'; 

$s = join ' ', $s =~ m|([^/]+?)\s*\)|g; 

say $s; 

출력

kw1 kw2 
+0

한 줄의 출력 또는 더 나은 문자열 수정이어야합니다 ... –

+0

@downvoter : 내 대답에 문제를 알려주시겠습니까? – Borodin

+0

궁금한 점이 있나요?이 코드는 perl v5.12가 필요합니까? – cHao

관련 문제