2009-12-16 2 views
0

C# 코드를 통해 FTP 서버에 연결하려고하는데 파일 및 디렉터리 목록을 가져옵니다. 그리고 ArrayList (모든 속성 포함)에 저장하고 있습니다. SYS ftp 명령을 통해 FTP 서버 유형을 찾을 수 있습니다. UNIX 기반 파일에 대한 정규 표현식을 사용하여 file \ directories 속성을 구문 분석합니다. 하지만 Windows FTP 서버 파일 구문 분석에 대한 표현이 없습니다. 그걸 만드는 데 도움이 필요합니다.Windows FTP 서버에 대한 파일 세부 정보 구문 분석

04-30-09 10:40AM  <DIR>   Acrobat 
12-08-09 10:36PM     9058 AuthCheck.zip 
12-06-09 12:49PM     174 desktop.ini 
11-09-09 03:33PM  <DIR>   FailedPDF 

나는 이것을 분석해야합니다. 날짜, 시간, Dir \ 파일, 파일 이름

도와주세요. 감사.

답변

0

전 C#에 대해 잘 모르겠지만, 그냥 정규식을해야하는 경우이 하나의 시도 :

^(\d\d-\d\d-\d\d)\s+(\d\d:\d\d(AM|PM))\s+([\w<>]*)\s+(\d*)\s+([\w\._\-]+)\s*$

$ 1 = 날짜, $ 2 = 시간 = 크기 $ 5, $ 3 = 오전 또는 오후, $ 4 = 유형 (널 (null)이 될 수 있음) (null의 경우 DIR), $ 6 = 이름

또는 $ 4입니다 IFF에 전용 또는 빈

^(\d\d-\d\d-\d\d)\s+(\d\d:\d\d(AM|PM))\s+(<DIR>)?\s+(\d*)\s+([\w\._\-]+)\s*$

나는 "<가"와 ">"C에서 # 특별한 문자

+0

$ 4 = 유형 (null 일 수 있음), 여기에 문제가있는 것 같습니다. dir의 경우 '>'가 표시됩니다. 다시 확인하십시오. – marshalprince

+1

어쩌면 C# 필요 ([\ w <>] +) *, 내 의도는 : "

"과 다른 뭔가가있을 수 있으므로 만 표시되거나 바뀌지 않는 경우 ()? (? -> 옵션은 0 또는 1을 의미 함) –

0
^(\d{2}-\d{2}-\d{2}\s*\d{2}:\d{2}(A|P)M)\s*(<DIR>){0,1}\s*(\d*)\s*(\w)\s*$ 

캡처 그룹 : 0 : 날짜 1 : 파일 크기 (또는 디렉토리는 null) 3 : 2 디렉토리인가, 나는 내가 그것을 테스트하지 못할 편리 컴파일러를 해달라고

이름을하지만, 시작하기에 충분히 근접해야합니다.

+0

정규식 정규식이 없음을 가정 = 새 정규 표현식 (@ "^ (\ d를 {2} - \ d를 {2} - \ d를 {2} \ s * (\ d *) \ s * (\ w) \ s * (\ s * \ d {2} : \ d {2} (A | P) M) \ s * (

) {0,1} \ s * $ ", RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace); 일치 검색 = regex.Match (filedetail); 여기에 일치하는 항목이 반환됩니다. – marshalprince

0

줄이 고정 된 구조 인 것처럼 보입니다. 그래서 당신은 단순히이 작업을 수행 할 수 있습니다 :

Date fileDate; 
bool isDir; 
int fileSize; 
string fileName; 

fileDate=line.Substring(0,18).ParseExact("MM-dd-yy hh-sstt"); 
isDir=line.Substring(24,5)=="DIR"; 
if (!isDir) 
{ 
    fileSize=int.Parse(line.Substring(29,10).Trim()); 
} 
fileName=line.Substring(39);