2012-06-28 5 views
-1

전체 파일 경로에서 파일 이름을 찾기 위해 정규 표현식을 만들려고하지만 디렉토리 만 반환하면 안됩니다. 예를 들어 C:\Users\IgneusJotunn\Desktop\file.docfile.doc을 반환하고 C:\Users\IgneusJotunn\Desktop\folder은 일치하는 항목을 찾아야합니다. 이것들은 모두 Word 또는 Excel 파일이지만, 나는 그것에 의존하지 않는 것을 선호합니다."."을 어떻게 찾을 수 있습니까?

StringRegExp($string, "[^\\]*\z",1) 

마지막 슬래시 다음에 오는 항목을 모두 찾아서 폴더와 파일을 구별 할 수 없습니다. 이 :

StringRegExp($string, "[^\\]*[dx][ol][cs]\z",1) 

거의 작동하지만, 못생긴 해킹 거기 DOCX 수 또는 파일을 XLSX 수 있습니다. 또한 파일의 이름은 MyNamesDoc.doc 일 수 있습니다. 어떤 기간 동안 검색 할 수 있다면 쉽게 해결할 수 있지만, .은 이스케이프에 사용하지 않는 문자 (줄 바꿈을 제외한 모든 단일 문자를 의미 함)입니다. 이 :

StringRegExp($ue_string, "[^\\]*\..*\z",1) 

그것의 기간 만 뭔가를 캡처, 마지막 백 슬래시 이후에 아무것도 찾는 작동합니다. 기간 통합하는 방법? 또는 파일을 검색하는 방법은 무엇입니까?

편집 : 내 질문에 답합니다. 나는 왜 그것이 효과가 없었으며 더 우아한 해결책이 있는지에 관심이 있습니다.

+1

지금 바로 폴더를 만들고 기간을 지정하십시오. 완전히 유효한 구문. 'My.Folder.Of.Awesome' 예를 들면. '/? < > \ : * | "불법 문자가 있지만 기간은 괜찮습니다. – TheZ

답변

1
Local $string = StringRegExp($string, "[^\\]*\.doc\z|[^\\]*\.docx\z|[^\\]*\.xls\z|[^\\]*\.xlsx\z",1) 

마침표는 대부분의 특수 문자가 사용하는 것과 동일한 이스케이프 슬래시로 작동합니다. 문서 유형에 관해서는 Or 파이프와 다른 확장 프로그램이 훌륭하게 작동합니다. 어떤 이유로 확장 프로그램을 추가해야하는 경우 다른 확장 프로그램을 추가하십시오.

0

Meh, 나는 지루하다. 당신은이 작업을 수행 할 수 있습니다 : 폴더가 그래서 당신이 파일을 확인해야 할 것 절대적으로 확신 할 수하려면 해당 이름이되지 않을 것이라는 보장이 없다

$sFile = StringRegExp($sPath, "[^\\]+\.(?:doc|xls)x?$", 1)

/폴더 속성. 그러나 누군가가 '.docx'와 같은 것으로 폴더 이름을 짓는 것은 의심 스럽습니다.

0
  • 문자열을 반대로합니다.
  • "." StringInStr와 "\"(및/또는 "/")
  • 에 대한
  • 봐 다시 역 StringinStr
  • 의 반환에서 오른쪽을 낸다.
관련 문제