파일 이름의 접미사를 제거하는 정규식은 무엇입니까? 예를 들어 "vnb.txt"와 같은 문자열에 파일 이름이 있으면 ".txt"를 제거 할 정규식은 무엇입니까? 감사합니다. .접미사를 제거하는 정규식
답변
운영 체제가 다르면 파일에 다른 문자가 허용 될 수 있습니다. 가장 간단한 정규 표현식은 (.+)\.txt$
일 수 있습니다. 파일 이름을 가져 오려면 첫 번째 캡처 그룹을 가져옵니다.
'.txt'뿐만 아니라 모든 파일 이름 확장자와 일치 시키려면'(. +) \. ([^ \.] +)'를 사용하십시오 (일치하지 않으면 파일 이름에 확장자가 없습니다). –
@ Felix Dombek : 당신은 또한'ENV1.20110329.dat'와 같은 파일 이름을 처리 할 수 있어야합니다 ... 당신의 패턴이'ENV1'과'20110329'를 포획 할 것이지만'.dat' 파일 확장자를 얻지는 않을 것이라고 생각합니다. – FrustratedWithFormsDesigner
아니요, 첫 번째 캡처 그룹이 꺼림 ('(\. +?))으로 지정되지 않은 경우 아닙니다. 하지만 확실하게 알고 싶다면'^'와'$'를 사용할 수 있습니다 : 완전한 정규 표현식은'^ (. +) \. ([^ \.] +) $' –
정규 표현식이 정말로 필요합니까? 스트링의 마지막 마침표를 찾지 않고 그 시점까지 문자열을 다듬어 보는 것이 어떻습니까? 솔직히, 정규 표현식에는 많은 오버 헤드가 있으며,이 경우에는 필자가 필요하다고 생각하지 않는다.
tstenner에 의해 제안으로, 당신은 당신이 사용하고있는 문자열의 종류에 따라 다음 중 하나를 시도 할 수 있습니다 :
첫 번째 예 :
char* str = "Directory/file.txt";
size_t index;
char* pStr = strrchr(str,'.');
if(nullptr != pStr)
{
index = pStr - str;
}
을
두 번째 예 :
int index = string("Directory/file.txt").find_last_of('.');
접미사를 제외한 모든 것을 제공하는 솔루션을 찾으려면 string::find_last_of을 사용해야합니다.
코드는 다음과 같을 수 있습니다 :
const std::string removesuffix(const std::string& s) {
size_t suffixbegin = s.find_last_of('.');
//This will handle cases like "directory.foo/bar"
size_t dir = s.find_last_of('/');
if(dir != std::string::npos && dir > suffixbegin) return s;
if(suffixbegin == std::string::npos) return s;
else return s.substr(0,suffixbegin);
}
정규 표현식을 찾는 경우는, \.[^.]+$
를 사용합니다.
첫 번째 .
을 이스케이프 처리해야합니다. 그렇지 않으면 모든 문자와 일치하며 끝에 $를 추가하므로 문자열 끝에 만 일치합니다.
Qt를 이미 사용하고 있다면 QFileInfo을 사용하고 baseName() 함수를 사용하여 이름 (있는 경우) 또는 suffix() 함수 (있는 경우)를 얻을 수 있습니다.
- 1. 모든 정규식을 제거하는 정규식
- 2. Div 태그를 제거하는 정규식
- 3. 공백을 제거하는 정규식 도움말
- 4. XSLT에서 단어를 제거하는 정규식
- 5. 숨겨진 필드를 제거하는 정규식
- 6. 텍스트 파일에서 코드를 제거하는 정규식
- 7. 키보드가 아닌 문자를 제거하는 정규식
- 8. URL 접미사를 추가하는 방법
- 9. Ruby에서 외국어가 아닌 기호를 제거하는 정규식
- 10. URL에서 호스트 이름과 포트를 제거하는 정규식?
- 11. 여러 개의? 기호를 제거하는 PHP 정규식
- 12. PHP :`â` 또는`â €`를 제거하는 정규식?
- 13. 이중 꺾쇠 괄호로 묶인 블록을 제거하는 정규식
- 14. 자바 따옴표 사이의 내용을 제거하는 정규식
- 15. 연산자 ++ 접두사/접미사를 서로 오버로드합니까?
- 16. erix에서 접미사를 접미사로 변환하는 방법은 무엇입니까?
- 17. PHP에서 문자열 끝에 접미사를 추가하는 방법
- 18. IE6은 "유용하게"다운로드 된 파일에 접미사를 덧붙입니다.
- 19. a-zA-Z0-9를 제외한 모든 문자를 제거하는 정규식?
- 20. 모든 입력/텍스트 영역을 제거하는 정규식/SELECT FROM html
- 21. ColdFusion에서 정규식 내가 현재 문자열에서 HTML을 제거하는 코드가
- 22. 숫자 및 마침표 이외의 모든 문자를 제거하는 PHP 정규식
- 23. 정규식 내가 원하지 않는 문자를 제거하는 regex.replace를 사용하려고 특수 문자
- 24. C#을 사용하여 지정된 빈 XML 태그를 제거하는 정규식 태그
- 25. 특정 단어가 포함 된 Java 주석 블록을 제거하는 정규식
- 26. 깨끗한 URL을위한 정규식
- 27. 정규식 내가 URL이 URL
- 28. .NET 정규식 파싱을위한 정규식
- 29. PHP 정규식 문제
- 30. 정규식
왜이 질문에 C++ 또는 qt4 태그가 지정되어 있습니까? –
@ 존 디 블링 : OP가 Qt4 및 C++을 사용하고 있기 때문에 그것이라고 추측 할 수 있습니다. Qt4/C++에 특화된 솔루션이 있다면 일반적인 솔루션에 비해 매우 환영받을 것이라고 생각합니다. – FrustratedWithFormsDesigner
a를 조금 후에 어떻게 알 수 있습니까? 정말 접미사입니까? ".hidenfile"다중 접미사는 어떨까요? "foo.bar.tar.gz"파일 이름을 조작하는 최종 목적은 무엇입니까? –