Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式,路径的特定字除外_Regex_Exception_Path_Word - Fatal编程技术网

Regex 正则表达式,路径的特定字除外

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

我需要用虚拟图像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)
但是,我想排除文件名中包含
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是的,但这会使模式更难阅读。如果我在应用程序代码中看到上面的正则表达式,我至少不会一看到它就呕吐。