我需要一些帮助来解决一个问题。
事实上,我通过十六进制代码搜索检查图像类型。
string JpgHex = "FF-D8-FF-E0-xx-xx-4A-46-49-46-00";
然后我有一个条件
string.StartsWith(pngHex).
问题是我的“JpgHex”字符串中出现的“x”字符可以是我想要的任何字符。
我想我需要一个正则表达式来检查,但我不知道怎么做!
非常感谢!
就像我说的那样,我需要更好地了解您需要匹配的模式。
这里有些例子:
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
假设你只想匹配两个数字,所以你会使用\d{2}
,整个事情看起来像这样:
Regex rgx = new Regex(@"^FF-D8-FF-E0-\d{2}-\d{2}-4A-46-49-46-00$");
rgx.IsMatch(pngHex);
我怎么知道这些神奇的人物?很简单,到处都有文档。有关一些基本的正则表达式模式,请参阅此 MSDN 页面。此页面显示了一些量词,例如匹配一个或多个或仅匹配一个。
我不太清楚你到底想做什么,但点“。” character 表示 Regex 中的任何字符。
所以正则表达式 "^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”。
正则表达式会帮助你;您可以使用以下工具来帮助您测试和学习:-
http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx
我建议你玩一玩,因为那样你就会学会!
要简单地匹配任何字符代替 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
}
您需要阅读正则表达式以了解一些可能看起来不熟悉的字符,即 ^ 和 $。见http://www.regular-expressions.info/