-2

我需要一些帮助来解决一个问题。

事实上,我通过十六进制代码搜索检查图像类型。

string JpgHex = "FF-D8-FF-E0-xx-xx-4A-46-49-46-00";

然后我有一个条件

string.StartsWith(pngHex).

问题是我的“JpgHex”字符串中出现的“x”字符可以是我想要的任何字符。

我想我需要一个正则表达式来检查,但我不知道怎么做!

非常感谢!

4

3 回答 3

1

就像我说的那样,我需要更好地了解您需要匹配的模式。

这里有些例子:

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
  1. 根据您的需要相应更改正则表达式,因此只有大写字母和数字您更改为[A-Z0-9]. {2}表示两次出现。
  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 页面。此页面显示了一些量词,例如匹配一个或多个仅匹配一个

备忘单也派上用场

于 2013-04-08T14:18:14.683 回答
1

我不太清楚你到底想做什么,但点“。” 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”。

于 2013-04-08T14:18:50.503 回答
0

正则表达式会帮助你;您可以使用以下工具来帮助您测试和学习:-

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/

于 2013-04-08T14:15:56.343 回答