2014-02-14 1 views
2

디렉토리를 듣고 있고 패턴을 따르는 모든 디렉토리 이름 (Feb14-201414022014-sometext)을 가져와야합니다. 디렉토리 이름은 점을 포함해서는 안되기 때문에 14022014-sometext.more과 일치시키고 싶지 않습니다. 당신이 볼 수 있듯이 나는 %b%d-%Y%d%m%Y-textofanylengthWithoutDots 패턴을 따르는 디렉토리 만 일치시키고 싶다.두 datetime 형식과 일치하는 정규식 패턴

첫 번째 경우에는 [a-zA-Z]{3}\d{2}과 같아야합니다. 내 정규식 기술이 형편 없기 때문에 나머지를 파싱하는 방법을 모른다. 미안하다. 그래서 나는 누군가가 올바른 패턴이 어떻게 생겼는지를 말할 수 있기를 바랍니다. 감사.

답변

0

나는 각각의 디렉토리 목록이

([A-Z]\w{2}\d{1,2}\-\d{4}|\d{7,8}\-\w+)$ 

두 경우 모두 일치합니다하고 (점 또는 그 문제에 관해서는 아무것도에 의해) 중단 경우에만 텍스트와 일치하는 새로운 라인으로 분리되어 가정입니다 라인의 끝.

일부 노트 :

  • 당신이 [^.]+와 최종 \w+을 대체 할 수 있습니다 점을 제외하고 모두 일치 할 경우

    .
  • 이 작업을 수행하려면 /m의 여러 줄 수정자가 필요합니다. 그렇지 않으면 $이 문자열의 끝과 만 일치합니다.
  • 나는 정규식의 시작에 ^을 추가하지했지만, 각 라인은 당신이 (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) 대신 [A-Z]\w{2} 포함하려면이 정규식을 확장 할 수 물론 하나의 디렉토리
  • 가 포함되어있는 경우 당신은 그렇게 할 수 있습니다. 읽을 수 있도록이 작업을 수행하지 않았습니다. 나는 또한 이것을 파이썬 배열에 저장하고 유지 보수를 위해 정규식에 동적으로 삽입 할 것을 제안한다.

는 직접보기 : http://regex101.com/r/pS6iY9

+0

감사합니다. 한 가지 더 :'Feb14-2014_xyz'와도 일치 시키려면 어떻게해야합니까? 따라서 2014 년 이후의 모든 \ + w (2 번째 사례와 같습니다). 어떻게해야합니까? 나는 작동하지 않는'([A-Z] \ w {2} \ d {1,2} \ - \ d {4} \ w + | \ d {7,8} \ - \ w +) $' 편집 : 나는 그것을 알아 냈다. 이것은 작동합니다.'([AZ] \ w {2} \ d {1,2} \ - \ d {4} \ w + | [AZ] \ w {2} \ d {1,2} \ - \ d {4} | \ d {7,8} \ - \ w +) $' – Cecil

0

아주 간단합니다. 내가 할 수있는 최선의 일입니다

((Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\d\d-\d\d\d\d)|(\d\d\d\d\d\d\d\d-\w+) 

첫 번째 부분 ((Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\d\d-\d\d\d\d) 날짜의 첫 번째 종류와 두 번째 부분 (\d\d\d\d\d\d\d\d-\w+) 일치 - 두 번째 종류. 이 돌 때까지