我需要创建一个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“
答案 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)