部分图像链接的正则表达式

时间:2016-06-28 21:00:39

标签: c# regex

我需要创建一个C#正则表达式,它找到以下匹配大小写:一个以任意数字开头的字符串,无论多少位数([0-9] )。然后它跟随斜杠/然后它可以包含任何序列()。它以.jpg结束时停止。

到目前为止,这是我在没有成功的情况下创造的:

 Regex oRegex = new Regex("^[0-9]*/*.(jpg)$");

由于我已经忘记了正则表达式,这里有没有人可以帮助我?

编辑:

有用字符串的示例:

  

23 / 3-2131-3134SA-2FRT-3DD.jpg

     

566 / FSFRT-D3566-DDDDSF.jpg

我已经尝试了大多数正则表达式在这个问题中回答,到目前为止没有运气。此字符串来自HTML响应。我将用HTML留下实际的回复:

  

/home/app/app-api/uload.php 94
\ n3 / 90C6D420-5B25-44CD-A57A-4A030D2762B0.jpg“

4 个答案:

答案 0 :(得分:4)

应该是这样的:

^\d+/.+\.jpg$

说明:

  • ^标记序列中一行的开头。

  • \d标记了一个数字([0-9]的简写)。

  • .+表示至少出现过一次任何字符。

  • \.jpg标记文字.jpg(需要转义的时段)。

  • $标记序列中的行尾。

答案 1 :(得分:2)

关于:

  

以任意数字开头的字符串,无论多少位数([0-9]*)。之后它跟随斜杠/,然后它可以包含任何序列(*)。它以.jpg结束时停止。

关键是你的[0-9]*没有强制执行必须的数字 - 开始要求,因为*量词允许匹配空字符串。此外,您可以使用/在字符串中不允许/*。然后,.未量化,而您希望将任何0+字符匹配到.jpg。那么,你需要.*。然后,必须转义.以匹配文字.

所以,你需要的正则表达式只是

new Regex(@"^[0-9]+/.*\.jpg$", RegexOptions.Multiline)

RegexOptions.Multiline 标志将允许在的开头进行匹配。

您没有使用RegexOptions.IgnoreCase标记,因此您希望区分大小写匹配。这个检查可以在没有正则表达式的情况下实现:

s.EndsWith(".jpg") && Char.IsDigit(s[0]) && s.Contains("/")

请参阅IDEONE demo。但是,/的位置在非正则表达式方法中没有被考虑。

答案 2 :(得分:1)

我认为你(1)混合了星星和圆点,(2)需要逃避斜线:

Regex oRegex = new Regex("^[0-9]+\/.+(\.jpg)$");

您可以在此处进行测试:https://regex101.com/r/mK8zK2/1

答案 3 :(得分:1)

这是匹配它的一种方法。

[0-9]*\/[a-zA-Z0-9_]*(\.jpg)