我正在尝试构建一个查找图像文件的正则表达式查询,并忽略查看子目录。
检查以下字符串
/content/dam/dev-img-test-folder/huehuehue.gif/jcr:content/renditions/cq5dam.thumbnail.140.100.png
/content/dam/someotherdirectory/nonoono.gif/jcr:content/renditions/cq5dam.thumbnail.140.100.png
/content/dam/dev-img-test-folder/huehuehue.jpg
/content/dam/some-directory/nononoono.jpg
正则表达式应该只检测最后两个字符串。我尝试使用/content/dam.*.(jpg| JPG | png),但这得到了所有四个。
有人可以指引我到正确的方向吗?谢谢。
答案 0 :(得分:3)
/content/dam/[^/]*/[^/]*(jpg|JPG|png)$
会将所有以({$}}}结尾的文件与大坝的任何子目录中的jpg|JPG|png
匹配。
如果您正在寻找可变数量的子目录,那么它将是一个不同的正则表达式。
.*\.(jpg|JPG|png)$
应匹配以jpg|JPG|png
结尾的任何行。
/([^/]*/){2,5}[^/]*(jpg|JPG|png)$
将匹配任何文件2到5个子目录深度。您可能需要根据正则表达式引擎/语法转义括号。
答案 1 :(得分:1)
如果您的数据有明确的分隔符,例如/
,则可以使用[^...]+
获取除之外的所有内容。如果您将其与$
一起使用,那么限制搜索深度非常有用。
在您的情况下,\/content\/dam\/[^\/]+\/[^\/]+\.(jpg|JPG|png)$
将有效。此外,正则表达式通常不区分大小写。您的字符串可能不需要JPG
。