C# 字符串中的正则表达式
在一个问题上我需要一些帮助 事实上,我是通过十六进制代码来搜索图像类型的C# 字符串中的正则表达式,c#,regex,C#,Regex,在一个问题上我需要一些帮助 事实上,我是通过十六进制代码来搜索图像类型的 string JpgHex = "FF-D8-FF-E0-xx-xx-4A-46-49-46-00"; 那我有一个条件 string.StartsWith(pngHex). 问题是“JpgHex”字符串中的“x”字符可以是我想要的任何字符 我想我需要一个正则表达式来检查,但我不知道怎么做 非常感谢 正则表达式将帮助您;您可以使用以下工具帮助您进行测试和学习:- 我建议你玩一出戏,因为那样你就能学会了 要简单地匹配任何
string JpgHex = "FF-D8-FF-E0-xx-xx-4A-46-49-46-00";
那我有一个条件
string.StartsWith(pngHex).
问题是“JpgHex”字符串中的“x”字符可以是我想要的任何字符
我想我需要一个正则表达式来检查,但我不知道怎么做
非常感谢 正则表达式将帮助您;您可以使用以下工具帮助您进行测试和学习:- 我建议你玩一出戏,因为那样你就能学会了 要简单地匹配任何字符以代替x,应使用以下操作:- “^FF-D8-FF-E0-..-..-4A-46-49-46-00$” 在C#中,应该是这样的:-
var test = "FF-D8-FF-E0-AB-CD-4A-46-49-46-00";
var foo = new Regex("^FF-D8-FF-E0-..-..-4A-46-49-46-00$");
if (foo.IsMatch(test))
{
// Do magic
}
您需要通读正则表达式,才能理解一些看起来不熟悉的字符,例如“^”和$。如我所说,我需要更好地了解您需要匹配的模式 以下是一些例子:
Regex rgx =
new Regex(@"^FF-D8-FF-E0-[a-zA-Z0-9]{2}-[a-zA-Z0-9]{2}-4A-46-49-46-00$");
rgx.IsMatch(pngHex); // is match will return a bool.
我使用[a-zA-Z0-9]{2}
表示一个字符的两个实例,大写或小写或数字。因此,上述正则表达式将匹配:
FF-D8-FF-E0-aa-zZ-4A-46-49-46-00
FF-D8-FF-E0-11-22-4A-46-49-46-00
.. etc
[A-Z0-9]
。{2}
表示两次出现^
表示字符串应以FF
开头,$
表示字符串应以00
结尾Regex rgx = new Regex(@"^FF-D8-FF-E0-\d{2}-\d{2}-4A-46-49-46-00$");
rgx.IsMatch(pngHex);
我怎么知道这些神奇的人物?很简单,到处都有文档。查看此MSDN页面了解一些基本信息。此页面显示了一些,如匹配一个或多个或仅匹配一个
.我不太清楚您到底想做什么,但点“.”字符表示正则表达式中的任何字符 因此正则表达式“^FF-D8-FF-E0-…-…-…-4A-46-49-46-00”可能会起作用。^=开始输入
如果只允许十六进制字符,可以使用“^FF-D8-FF-E0-[0-9A-F]{2}-[0-9A-F]{2}-4A-46-49-46-00”。您能更清楚地定义我想要的
吗?字母表?数字?空白?阅读字符类或字符集
部分。同时检查点匹配(几乎)任何字符
它是十六进制字符!您应该问的问题是,为什么要尝试使用十六进制代码搜索图像类型。我喜欢这样,但是var“test”必须以foo开头,“test”可以比foo长!若测试比你们匹配的要长,你们有两个选择;i、 e.删除“$”项。您可能不应该删除“^”,因为您可能会遇到文件“碰巧”包含初始搜索字符串的不幸情况