查找不同扩展名的所有正则表达式匹配项

时间:2013-09-23 20:41:54

标签: regex

我有以下声明:

<div><img src="pict001.png"></div><div><img src="pict002.jpg"></div>

我正在尝试匹配src名称,结果是:

 [ "pict001.png", "pict002.jpg" ]

到目前为止,我有:

/pict[\d]+\.wpf/

但我在文件扩展名

上遇到了问题(?)

2 个答案:

答案 0 :(得分:1)

如果您有可接受的文件扩展名列表,可以这样设置: pict[\d]+\.(jpg|png|xyz)。您所做的是围绕()期望的|分隔的不同类型的扩展程序。 Using your test data you provided I did some quick testing on Rubular.

如果您没有扩展程序列表,则可以执行更加动态的操作,例如:pict[\d]+\.[a-zA-Z]{2,3}。这几乎是一回事,只会返回2到3个字符的任何文件扩展名。长。通过调整数字,您可以允许在特定范围的字符中进行任何奇数扩展。

使用更复杂的正则表达式,有助于将它们分解成更小的部分以找出所有规则。在这种情况下,您可以将pict[\d]+\.部分与pict#######.匹配。之后你只需要一个较小的正则表达式来找到你的扩展。您可以根据需要将其设置为复杂(或简单)。看看我提供的两个,唯一真正的区别在pict[\d]+\.之后,所以你可以用额外的规则和条件来定制它。

答案 1 :(得分:0)

搜索所有匹配项将起作用:

pict[\d]+\.[a-zA-Z0-9]+(?=([^a-zA-Z0-9]|$))

如果你想要特定的扩展,你可以用(png | jpg | gz)替换[a-zA-Z0-9] +(?=([^ a-zA-Z0-9] | $))或某些东西,但扩展名可以是数字和字母的任意组合。