2014-02-24 4 views
2

폴더를 무시하지만 일부 폴더는 보존하려고합니다. 나는 불행하게도이 작동하지 않습니다이.hg 일부 하위 폴더를 제외한 폴더

syntax: regexp 
^site/customer/\b(?!.*/data/.*).* 

같은 정규 표현식 매칭을 시도했다. 이 answer에서 파이썬은 고정 너비 부정 참조 만 읽었습니다.

원하는 무시 무시할 수 있습니까?

답변

0

파이썬 정규식

파이썬은 부정적인 내다에게 조회 (?=.*foo)을 지원 멋지다. 그러나 임의 길이 부정 표정 (lookbehind) 검색을 지원하지 않습니다. (?<=foo.*). 고정 (?<=foo..)이어야합니다.

즉, 문제를 확실히 해결할 수 있음을 의미합니다.

다음과 같은 정규식있어

문제 : /customer/(?!.*/data/.*).*.
/customer/data/name 입력 예를 들어 봅시다. 이유가 있습니다.

/customer/data/name 
^^^^^^^^^^ -> /customer/ match ! 
     ^(?!.*/data/.*) Let's check if there is no /data/ ahead 
      The problem is here, we've already matched "/" 
      so the regex only finds "data/name" instead of "/data/name" 
      ^^^^^^^^^ .* match ! 

은 기본적으로 우리는 단지 우리가 문자열의 시작에 있는지 확인하고 우리가 \b를 사용하여 customer 일치하는지 확인하기 위해 앵커 ^을 추가, 하나 슬래시를 제거해야 정규식 수정 : ^/customer\b(?!.*/data/).*. 답변에 대한

Online demo

+0

안녕하세요, 감사합니다. 내 폴더에는 다른 고객을위한 폴더가 있으며 여기에 다시 데이터 폴더를 저장할 수 있습니다. 이론적으로 내 regexp 그 일치해야합니다. ^ site/customer/\ b (?!. */data /.*).* 그러나 왼쪽의 문제를 해결하려고 시도했지만 작동하지 않습니다. – Niksac

+0

@Niksac [regex101] (http://regex101.com) 데모를 제공해주십시오. 또한 나는'^/customer/b (?!. */data /)****'를 사용하지 않았고'^ site/customer/\ b (?!. */data /.*).*'를 사용하지 않았다는 것에주의하십시오. (당신은 forwardslash를 추가했습니다) – HamZa

+0

regexp는 http://regex101.com/r/pG9mV1에서 작동하지만 여전히 모든 파일을 무시합니다 – Niksac