2012-10-16 2 views
0

정규식 도움말이 필요합니다.문자열을 포함하는 줄을 삭제하고 다른 문자열을 포함하지 않는 방법은 무엇입니까?

Firefox의 firebug 확장명 "css-usage"를 사용하여 페이지에서 참조되지 않은 모든 클래스에 "UNUSED"가 붙은 새 CSS 파일을 내보낼 수있었습니다.

UNUSED 스타일이 포함 된 모든 스타일을 제거하고 싶습니다. 그러나 여기에는 약간의 복잡성이 있습니다. 즉, 일부 태그는 다른 태그/선택기와 쉼표로 구분되어 있으므로 쉼표가있는 행은 삭제하지 않으려 고합니다. 둘째로 어떤 스타일은 중괄호로 묶인 긴 다중 행 블록에 지정되어 있으므로 닫는 중괄호 '}'가없는 행은 삭제하지 않으려합니다.

나는 Mac을 사용하고 있으므로 SED 또는 AWk 또는 vi를 사용하는 모든 솔루션을 사용할 수 있습니다. "UNUSED"로 시작하고 쉼표가 없으며 닫는 '}'중괄호가 있어야하는 CSS 파일의 모든 행을 삭제하고 싶습니다.

답변

0

문자열에 문자를 캡처하거나 포인터를 앞으로 이동하지 않고 문자가 들어 있는지 테스트하려면 미리보기를 사용하십시오.

또는 문자열에 해당 문자가 포함되지 않도록하려면 부정적인 미리보기를 사용하십시오. 당신이 문자열이 문자를 포함하지 않고 다른 문자를 포함 않습니다 있는지 확인하려면

(?!.*[,]) 

, 당신은 부정적이고 긍정적 인 lookaheads을 결합 할 수 있습니다.

(?!.*[,])(?=.*[}])(?=.*UNUSED) 

마지막으로이 일치가 발생하는 전체 문자열을 실제로 선택하려면 미리보기 뒤에. *를 사용하십시오.

^(?!.*[,])(?=.*[}])(?=.*UNUSED).*$ 

나는 .NET을 대부분 잘 알고 있지만, 나는 많은 정규식 엔진은 당신이 ^$ 전체 입력 문자열의 시작/끝 또는 시작/끝과 일치 여부를 지정할 수있는 옵션이 생각 선. 두 번째 옵션이 필요합니다.

마지막으로 regex replace를 사용하여 지정된 표현식과 일치하는 행을 빈 문자열로 대체 (따라서 해당 행을 "삭제") 할 수 있습니다.

0

쉼표없이 UNUSED 일치하고 }로 끝나는 있는지 확인하려면 여러 줄 수정과

UNUSED [^,]*} 
0

사용 정규식 패턴

^UNUSED[^,]*}[^,]*$ 

.

관련 문제