I가 다음 원래 문자열 :만들기 일부
# Desired result
js/main_dev.js
js/blog/foo_dev.js
js/blog/foo_dev.min.js
을 그래서 기본적으로 :
# Original strings
js/main_dev.js # This one is just to check for false positives
js/blog/foo.js
js/blog/foo.min.js
내가 하나 하나에 대체 정규식을 실행하고이와 끝까지 싶습니다 _dev
앞에 .min.js
을 추가하고, 그렇지 않으면 .js
앞에 추가하십시오. 이는 js/blog
또는 js/calculator
으로 시작하고 .js
으로 끝나는 문자열에만 적용해야합니다.
처음에는 (js\/(?:blog|calculators)\/.+)(\.min\.js)$
을 정규식으로 시작한 다음 $1_dev$2
을 대체로 사용했습니다. 제 세 번째 문자열에는 효과가 있지만 제 두 번째는 분명하지 않습니다. 나는 "어려워서".min.js
을 찾고 있습니다. 그래서 나는 과 같은 ?
과 함께 비 캡처 그룹에 던져서 .min
을 옵션으로 만들 것이라고 생각했습니다. 지금이 내 두 번째 문자열을 작동하지만 세 번째 문자열은 모든 구타이다 : 나는 단순히 (\.min\.js|\.js)
하지만 아무 소용에, 같은 동작의 모든 결과를 일을 포함하여이 많은 순열을 시도했습니다
js/main_dev.js # Good
js/blog/foo_dev.js # Good
js/blog/foo.min_dev.js # Bad! _dev should be before the .min
. 여기에 "나쁜"정규식이있는 Regex 101 붙여 넣기가 있습니다. https://regex101.com/r/bH3yP6/1
여기서 내가 뭘 잘못하고 있니?
과속 저를 체포 같은 이름을 가진 헌병이있다. –
@CasimiretHippolyte : 당신의 regexes가 너무 빠르기 때문입니다 :) –
나는이 시점에서 정규 표현식을 모르거나 Turpin gendarme도 모르지만, 그는 쌍안경을 사용하는 방법을 알고있었습니다. –