2014-04-18 2 views
1

내 응용 프로그램의 모든 .js 파일을 숭고한 것으로 나열하고 있지만 정규화를 사용하여 축소되지 않은 파일 만 표시하려고합니다. 나는 [NOT] .min [/ NOT] .js 인 파일을 반환하고 싶습니다. [^ (\ .min)] \ .js를 사용하고 있는데, 작동하는 것처럼 보이지만 파일을 놓치고 있는지 확실하지 않습니다. 여기에 더 나은 정규 표현식을 사용할 수 있습니까? 정규식을 사용하여 단어 건너 뛰기

/showhouse-bootstrap-datepicker.js  want returned 
/dataTables.bootstrap.js    want returned 
/additional-methods.min.js    dont want returned 
/bootstrap-switch.min.js    dont want returned 

나는 다음과 같은 작업 것이라고 생각하지만 그것은 모두의 .js

대신에게 not 방법을 수행하는
(?!\.min)\.js 
+0

왜 당신이 파일을 놓칠 것 같아 거라고? – Severin

+0

정규식이 확실하지 않고 .js로 끝나지만 .min.js로 끝나는 모든 파일을 반환하는지 확실하지 않습니다. –

+0

[The Stack Overflow Regular Expressions FAQ (http://stackoverflow.com/questions/22937618/) 참조 - 할 -이 - regex - 평균/22944075 # 22944075) 답변을 관심이있을 수 있습니다 : [단어를 포함하지 않는 문자열 일치] (http://stackoverflow.com/q/406230) – aliteralmind

답변

1

, 긍정적 인 검색으로 할를 반환합니다.

[^(\.min)]\.js입니다. 이것은 m 또는 n 또는 i이있는 j로 끝나는 파일과 일치하지 않습니다. 확인해 봐 .

다음과 같은 정규식을 사용하십시오. 여기

(?<!\.min)\.js 

데모 : 그런 다음 하위 표현식과 일치하는 역 참조를 사용 *.min.js 및/또는 *.js 일치하는 항목을 그룹화 패턴을 사용할 수 있도록 http://regex101.com/r/rJ1jN3

0

숭고한 텍스트, 부스트 정규식 구문을 사용합니다 :

^(.+w+\.js)|(.+\w+\.min\.js)\1$ 

제 1 패턴에 일치 *.js^(.+\w+\.js) 그룹 어떤 서브 표현식 1, 제 2 패턴 (.+\w+\.min\.js)은 일치하는 *.min.js을 부분 식 2에 넣습니다. 마지막 단계는 하위 표현 1에 대한 역 참조를 \1으로 이스케이프 처리하여 사용하는 것입니다.

문자열 :

something.min.js 
min.js 
1234.js 
submin.js 
file.js 
admin.js 
script.min.js 
gar.min.js 
garmin.min.js 
harmin.marmin.min.js 
garmin.js 

일치 :

min.js 
1234.js 
submin.js 
file.js 
admin.js 
garmin.js