这些正则表达式会匹配不同的字符串吗?

时间:2016-05-05 19:22:17

标签: regex

([^/]+)/(thumb)\.(jpg)$
([^/]+/)?(thumb)\.(jpg)$

我知道?表示零次或一次。在/之前thumb是否意味着它出现一次?

2 个答案:

答案 0 :(得分:1)

是的,第一个表达式需要字符串中的/,并且在与/不同之前至少需要1个字符。

在第二个表达式中,它不是必需的。例如,thumb.jpg将匹配第二个但不匹配第一个。

最后,第一个表达式匹配的每个字符串也将与第二个表达式匹配。

答案 1 :(得分:1)

是的,他们匹配不同的东西。

例如,这一个:

([^/]+/)?(thumb)\.(jpg)$

匹配字符串:thumb.jpg

?使整个子表达式成为可选项。

另一个没有。

([^/]+)/(thumb)\.(jpg)$
       ^

如您所见,/是静态的,因此它必须存在。

此外,之前必须至少有一个不是/个字符。这就是+的含义。