我有以下原始字符串:
# Original strings
js/main_dev.js # This one is just to check for false positives
js/blog/foo.js
js/blog/foo.min.js
Run Code Online (Sandbox Code Playgroud)
我想在每一个上运行替换正则表达式并最终得到:
# Desired result
js/main_dev.js
js/blog/foo_dev.js
js/blog/foo_dev.min.js
Run Code Online (Sandbox Code Playgroud)
所以基本上,如果它存在_dev之前添加.min.js,如果不存在,之前添加.js.这应该只适用于与开头的字符串js/blog或js/calculator中和结束.js.
我最初开始时(js\/(?:blog|calculators)\/.+)(\.min\.js)$是一个正则表达式,然后$1_dev$2是替换.这适用于我的第三个字符串,但显然不是我的第二个字符串,因为我"很难"寻找.min.js.所以,我想我会做.min可选用一个把它扔在非捕获组?是这样的:(js\/(?:blog|calculators)\/.+)((?:\.min)?\.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
Run Code Online (Sandbox Code Playgroud)
我已经尝试了很多这方面的排列,包括简单地做(\.min\.js|\.js)但无济于事,都导致了同样的行为.这是一个带有"坏"正则表达式的Regex 101粘贴:https://regex101.com/r/bH3yP6/1
我在这做错了什么?
尝试在第一组(非捕获组)结束?后抛出一个+以使其变得懒惰(非贪婪):
(js\/(?:blog|calculators)\/.+?)((?:\.min)?\.js)$
(?:\.min)?是可选的,.+是贪婪的,所以.+捕获.min.
https://regex101.com/r/bH3yP6/3
| 归档时间: |
|
| 查看次数: |
1081 次 |
| 最近记录: |