2013-07-31 4 views
-2

그래서 만약 문자열 $ A = "어쩌구 bluh bu.du" 를 포함하는 문자열의 하위 문자열을 찾을 수 문자열에 ".du"가 있습니다. 새 문자열 $ b에 저장된 단어 budu를 지금 어떻게 얻을 수 있습니까? 나는 perl을 사용하고있다 미안하지만, du는 파일 확장자와 같았 어.정규식 내가 사용하여에 뒤 문자열이있는 경우 체크 패턴

+2

정말 해당 문자열과 일치합니까? –

+0

음 ... 아니요,'/ \ du + /'는 하나 이상의 'u'가 뒤에 오는 자리를 확인합니다. –

+0

그 일이 모든 것을 통과했습니다. 잘못된 질문으로 인해 죄송합니다. – ban

답변

3

괄호 안의 캡처하려는 부분을 둘러 쌉니다.

if($a =~ /([a-zA-Z]*?du[a-zA-Z]*?)/){ 
    if (defined $1) { 
     my $word = $1; 
     print "$word\n"; 
    } 
} 
+1

글자와 일치시키고 단어 경계 ('\ b')에 앵커하기 위해'\ w' charclass를 사용하는 것이 더 좋을 수도 있습니다 :'/ \ b (\ w * du \ w *) \ b /'. 또한 게으른 한정 기호에 대한 필요성이 없습니다. 또한 정규 표현식이 일치하면 '$ 1' *이 정의됩니다 (가능한 가장 짧은 일치는'du'를 포함합니다). →'$ a = ~/\ b (\ w * du \ w *) \ b /'이면 $ 1이라고 말하십시오. – amon

+0

위의 편집을 참조하십시오. – ban

+0

미안 해요. 바보 같은 실수를했습니다. – ban