2014-02-17 2 views
0

다음과 같이해야합니다 : 's/oldstr/newstr/g;pattern' 즉, oldstr을 바꿔서 교체 후 문자열에서 pattern을 찾습니다. 하나의 정규식으로 모두.펄 검색 및 하나의 정규 표현식으로 바꾸기

+0

패턴이 바꾸기와 아무런 관련이 없다고 생각해보십시오. 마찬가지로 문자열을 변경하고 결과를보다 복잡한 패턴과 대조하십시오. – simbabque

+0

에's/oldstr/newstr/g'이 있습니까? 아무것도. – avalanche

+2

왜 모두 하나의 정규 표현식? 완전한 샘플 입력을 보여주고 원하는 결과가 있습니까? – ysth

답변

3

첫 번째 문자열을 바꾸고 결과 문자열에서 패턴을 찾으려면 두 표현식을 서로 붙여야합니다. /r 플래그로 바꾸면 변경된 문자열이 반환되고 m 연산자는 해당 문자열을 패턴과 비교합니다.

use Test::Simple 'no_plan'; # this is just for the ok() function 

my $str = 'foobar'; 
ok($str =~ s/o/0/gr =~ m/\d\d/); 
ok($str =~ s/o/0/gr !~ m/\d\d\d/); 

__END__ 
ok 1 
ok 2 
1..2 
+1

기술적으로 두 경우 모두 정규식이지만 OP가 얻을 가능성이 높기 때문에 그가 원하는 것과 거의 비슷합니다. 가독성을 위해 어떤 점수를 얻었는지 확신 할 수 없지만 그건 당신 잘못이 아닙니다. –

+0

그래, 알아. 그리고 나는 그것을 읽을 수 있도록 주장하고 있지도 않다. :) – simbabque

관련 문제