2011-01-26 2 views
1

나는 건방진 정규식을 생각해 냈지만 지금까지는 행운이 없다. 여러분 중 한 분이 제 하루를 만들 수 있기를 바랍니다.일부 정규식 C 도움말 #

데이터 :

This_is.S0meNam3_.var01.tar 
This_is.S0meNam3_.var1.tar.gz 
This_is.S0meNam3_.tar.gz 

주어진 모든 exmaples를 분석 한 후 내가 그룹

Group1 -> Group2 
This_is.S0meNam3_ -> .tar 
This_is.S0meNam3_ -> .tar.gz 
This_is.S0meNam3_ -> .tar.gz 

나는 모든 것이 의미가 희망에 잎에 가지고 기대.

감사합니다.

+0

어떤 패턴 않는'This_is- S0meNam3' 부분이 따라 오나요? 문자와 숫자 만인가? – jjnguy

+0

전혀 이해가되지 않습니다. 기준은 무엇입니까? '.tar.gz'와'.tar'만을 찾고 있습니까? 또는 다른 파일 확장자도 처리 할 수 ​​있어야합니까? –

+0

내가하려고하는 것은 ... 파일 확장명을 없애고 .varXX가 문자열에 포함되어 있으면 제거해야합니다. – user590723

답변

2

는 다음과 같은 시도 :

^(.*?)(?:\.var\d+)?((?:\.tar)?(?:\.gz)?|(?:\.(?:zip|rar)))$ 

이 유일하게 가능한 결말이 .zip, .rar, .tar, .gz.tar.gz, 있다고 가정하고 모두 제거하려는 것들이 몇 개의 <n>의 형태 .var<n>의 것을 . 이 This_is.S0meNam3_.tar.gz는 다음과 같은 방법으로 모두 파일 이름과 확장자로 분할 할 수있는 임의의 확장, 더 아래로 줄이지 않고 정말 가능하지 않다 받아 얻기

:

This_is     - S0meNam3_.tar.gz 
This_is.S0meNam3_   - tar.gz 
This_is.S0meNam3_.tar  - gz 
+0

거의 다 있습니다. 다른 사례를 추가 할 수 있습니까? This_is.S0meNam3_.zip This_is.S0meNam3_.var1.rar – user590723

+0

내 대답이 수정되었습니다. –

+0

감사합니다. – user590723