2014-11-18 4 views
1

perl의 정규 표현식에 몇 가지 문제가 있습니다. 다른 문자열의 시작 부분에 문자열을 추가하려고합니다. 실제로 파일 이름의 시작 부분에 문자열을 삽입합니다. 내가 원하는 것은 파일이 이미 그것으로 시작한다면 그 문자열을 삽입하기 전에 검사하는 것이다.정규식 및 변수 이름의 정규식

if ($ficheroSinExt !~ m/^$strCadena/){ 
    # if it doesn't exist at the beginning, I insert it... 
    $ficheroSinExt = $strCadena . " " . $ficheroSinExt; 
} 
else{ 
    print "---->It already exists!!!\n"; 
} 

나는 하나의 시작 ("[펄] File1.pdf"와 "File2.pdf에서 [펄]를 포함하는 두 개의 파일 이름으로 테스트하고 있습니다 :

는 내가 가지고있는 코드입니다 "), $ strCadena에는 [Perl]이 있습니다. 필자는 두 파일 모두에 [Perl]을 추가하기 때문에 새로운 이름은 "[Perl] [Perl] File1.pdf"및 "[Perl] File2.pdf"입니다.

문제는 일치 연산자의^$ strCadena에서 발생한다고 생각하지만 문제 해결을 위해 도착하지 않았습니다. 나 한테 손을 줘 줄래? 사전에

감사합니다, 디에고

+0

'$ ficheroSinExt = ~ S/^ (?! Q $ strCadena \ E)/$ strCadena/x; ' –

답변

1

견적 특수 문자 :

당신은 패턴 메타 문자를 사용하지 않을
if ($ficheroSinExt !~ m/^\Q$strCadena/){ 
#     here __^ 
+0

답변 해 주셔서 감사합니다. – ingenierocps

+0

@ingenierocps : 환영합니다. 도움이되기를 기원합니다. – Toto

1

(perlre 참조)

if ($ficheroSinExt !~ m/^\Q$strCadena\E/){ 
+0

답장을 보내 주셔서 감사합니다. – ingenierocps