나는 다음과 같은 특성을 가진 파일 경로와 일치하는 정규 표현식을 쓰기 위해 노력하고 있어요 링크 :정규식
- 는
/./
또는 /../
적어도 중첩되어야를 포함하지 않는 깊은/tmp/media
- 내에서 하나 개의 하위 디렉토리
.log
,477 끝나야합니다 여기
\/tmp\/media\/(?!.*\.?\.\/)+(?:.*\.log)
내 원하는 결과입니다 (문자열이 일치하지 않는 경우, 내가 만족하지 요건 인용) : 나는
this question을 읽고
/tmp/media/log.log //NO-MATCH (2)
/tmp/media/test/log.log //MATCH
/tmp/media/../log.log //NO-MATCH (1)
/tmp/media/./log.log //NO-MATCH (1)
/tmp/media/test/../log.log //NO-MATCH (1)
/tmp/media/../test/log.log //NO-MATCH (1)
/tmp/media/.t/log.log //MATCH
/tmp/media/.../log.log //MATCH
/tmp/log.log //NO-MATCH (2)
/tmp/media/test/log.notlog //NO-MATCH (3)
/tmp/media/test/./log.log //NO-MATCH (1)
를내가 지금까지 무엇을 가지고 , 그리고 성공적으로 답변을 구현했지만, /tmp/media/log.log는 내가 원하지 않을 때도 여전히 일치합니다. /media/
과 log.log
사이의 빈 문자열이 어떻게 든 (?!.*\.?\.\/)
을 만족시키기 때문입니다.
누구든지 내가 뭘 잘못하고 설명 할 수있게 도와 줄 수 있습니까?
이것은 또한'/ tmp/media // log.log'와 일치하는 것으로 보입니다. 필자의 요구 사항에서 지정하지 않았지만 합법적 인 파일 경로만을 원한다고 언급 했어야합니다. –
'/ tmp/media // log.log'는 실제로 합법입니다 - http://unix.stackexchange.com/questions/1910/how-linux-handles-multiple-path-separators-home- username-file –
아, 지적 해 주셔서 고마워요. 직관은 그렇지 않다라고 말했다 : –