2012-04-20 2 views
2

는 나는이 문제 아무것도하지 않았다 믿는다이 RegExp에 어떤 문제가 있습니까?

sed -e "s_//[01]\.thumbs\.4chan\.org/[a-z0-9]\+/src/\([0-9]\*\)s\.jpg_/${LOC}/\1s.jpg_g" -e "s_//images\.4chan\.org/[a-z0-9]\+/src/\([0-9]\*\)\.\(jpg\|gif\|png\)_/${LOC}/\1.\2_g" $LOC.html > a 
이 링크를 온라인과 오프라인 링크를 변환하지 않는 이유

누군가가 말해 줄래?

답변

2

\*\+*+이어야한다고 생각하십니까? 그렇지 않으면 문자 그대로 *+입니다. 당신이 같이 간단한 정규식 모드에서 sed를 사용

+0

이상한, LOC'이'LOC = $처럼 보이는'때문에 (에코 "$ 1"| '+'가 이스케이프 처리되어 작동하는 것을 볼 수 있듯이 – user1263513

+0

별표 만 이스케이프 처리해야 함 ' \ *'~'''과'\ +'는 그대로입니다. 어쨌든, 고맙습니다. – user1263513

+0

@ user1263513 : 나는 틀림없이 당신이 틀림 없습니다. 'vim', PHP의'pcre','grep' 사이에서 나는 그것을 올바르게하기 위해 약간 실험해야합니다. – wallyk

1

은 당신이했던 것처럼 +\+으로 탈출해야하며, "예상"로 필요 * 별표 즉, Asis으로합니다. 도망 가지 않았다. 여기 당신이 -r 옵션을 사용하여, extended regex 모드에서 sed의 일의 사용을 단순화하려면 \+*

를 사용하여 테스트의 몇입니다. 당신은 탈출 할 필요가 +, (, ) ....

echo '//0.thumbs.4chan.org/abc123/src/029s.jpg' | 
    sed -n "\_//[01]\.thumbs\.4chan\.org/[a-z0-9]\+/src/\([0-9]*\)s\.jpg_p" 

echo '//images.4chan.org/abc123/src/029.jpg' | 
    sed -n "\_//images\.4chan\.org/[a-z0-9]\+/src/\([0-9]*\)\.\(jpg\|gif\|png\)_p" 

출력되지 않습니다

//0.thumbs.4chan.org/abc123/src/029s.jpg 
//images.4chan.org/abc123/src/029.jpg 
관련 문제