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
    结尾
  • 假设您只想匹配两个
    数字,那么您将使用\d{2},整个过程如下所示:

    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.删除“$”项。您可能不应该删除“^”,因为您可能会遇到文件“碰巧”包含初始搜索字符串的不幸情况