Regex 正则表达式,路径的特定字除外
我需要用虚拟图像URL替换图像URL。我当前在排除具有Regex 正则表达式,路径的特定字除外,regex,exception,path,word,Regex,Exception,Path,Word,我需要用虚拟图像URL替换图像URL。我当前在排除具有ignore文件名的路径时遇到问题 我已经成功实现了匹配以下两个路径的正则表达式: images/image filename.png和。/images/image filename.png 使用以下正则表达式: ..\/images\/(.*?)\.(?:png|jpg|jpeg|gif|png|svg)|images\/(.*?)\.(?:png|jpg|jpeg|gif|png|svg) 但是,我想排除文件名中包含ignoreword
ignore
文件名的路径时遇到问题
我已经成功实现了匹配以下两个路径的正则表达式:
images/image filename.png
和。/images/image filename.png
使用以下正则表达式:
..\/images\/(.*?)\.(?:png|jpg|jpeg|gif|png|svg)|images\/(.*?)\.(?:png|jpg|jpeg|gif|png|svg)
但是,我想排除文件名中包含ignore
word的任何路径,例如:
images/image-filename-ignore.png
谢谢 这里有一个选项,使用负前瞻来断言
ignore
不会作为文件名的一部分出现:
images\/(?!.*ignore.*\.[^.]+).*\.(?:png|jpg|jpeg|gif|png|svg)
但是,您也可以通过实际将无效文件名与ignore
进行匹配,然后从逻辑上排除这些匹配:
images\/.*ignore.*\.(?:png|jpg|jpeg|gif|png|svg)
我猜您可能需要添加一个
i
标志和单词边界:
\/?images\/(?!.*\bignore\b)[^.]*\.(?:png|jpe?g|gif|svg|tiff|other_extensions)
如果您希望探索/简化/修改该表达式,它已被删除 在的右上面板上进行了说明 . 如果你愿意,你可以 也可以观看,它将如何匹配 对照一些样本输入
您可能希望避免枚举
png
两次jpeg | jpg
可以简化为jpe?g
@tripleee是的,但这会使模式更难阅读。如果我在应用程序代码中看到上面的正则表达式,我至少不会一看到它就呕吐。