2012-11-07 3 views
1

sed를 사용하여 정규 표현식에서 한정 기호와 메타 문자를 제거하는 데 문제가 있습니다. 문제를 복잡하게하기 위해 코드는 평가 내에서 사용하기위한 것입니다.perl sed 정규 표현식에서 한정 기호를 이스케이프 처리합니다.

$word_check = "about\s*[\w\s]+"; 
$word_check =~ s/\\\[.+\\\]//g; 
$$word_count[$#$word_count + 1] +=() = $word_check =~ /(\w+)\s*/g; 

Word_check는 정규식의 사본입니다. 정규식을 단어로 바꾸고 싶다면 과 일치해야합니다. 정규식을 사용하여 그렇게하십시오. 그런 다음 단어를 세어 결과를 배열에 저장하십시오. 선택의 여지 이유는 정규식이 여러 가지이며, ($ &)으로 작업 할 때 단어가 제거됩니다. 평가에서. 아래의 코드는 문자열로 사용됩니다.

for (my \$i = 0; \$i < \$\$ref_word_count[\$R]; \$i++) { 
    \$temp_str =~ s/^\\w+\\s*//; 
} 

확인 대답을 찾았습니다. 그냥 sed 문을 분해하고 대괄호를 문자 하나만으로 보는 것이 필요했습니다.

$word_check =~ s/i$//; 
$word_check =~ s/[\.\+]//g; 
$word_check =~ s/\\[sdwSWD]//g; 
$word_check =~ s/[[]//g; 
$word_check =~ s/[]]//g; 
$word_check =~ s/[*]//g; 
$word_check =~ s/[?]//g; 
+2

귀하의 질문에 명확하지 않습니다. 정확히하고 싶은게 뭐야? 입력 및 예상 출력이있는 실제 예제를 게시 할 수 있습니까? –

답변

1

은 아마이 생각, \ E E 끝 어느 경우 수정 또는 인용 부분 \

까지

\ Q 견적 (해제) 패턴 메타 문자를하는 데 도움이 VI

참조 perldoc perlre

+0

작동하지 않는 빈 문자열이있을 때이 기능이 훌륭했습니다. 감사 :) –

관련 문제