字符串中的正则表达式
我需要一些问题的帮助。字符串中的正则表达式
实际上,我用十六进制代码搜索图像类型。
string JpgHex = "FF-D8-FF-E0-xx-xx-4A-46-49-46-00";
然后我对
string.StartsWith(pngHex).
条件的问题是,“X”字符,呈现在我的“JpgHex”字符串可以是我想做的事情。
我想我需要一个正则表达式来检查,但我不知道如何!
非常感谢!
正则表达式会帮助你;您可以使用以下工具来帮助你测试和学习: -
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/
我喜欢那样,但var“test”必须以foo开头,“test”可以比foo长! – 2013-04-08 14:22:05
没关系,谢谢你 – 2013-04-08 14:24:33
如果测试比你所匹配的时间长,你有几个选择;即删除'$'。您可能不应删除'^',因为您可能遇到不幸的情况,其中您的文件'巧合'包含初始搜索字符串 – chrisw 2013-04-08 14:29:21
就像我说的,我需要更好地了解您需要匹配的模式。
下面是一些例子:
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
结尾。
比方说,你想只匹配2个号码,因此会使用\d{2}
,整个事情是这样的:
Regex rgx = new Regex(@"^FF-D8-FF-E0-\d{2}-\d{2}-4A-46-49-46-00$");
rgx.IsMatch(pngHex);
我怎么知道这些神奇的人物?很简单,到处都有文档。看到这个MSDN页面的一些基本regex patterns.这个页面显示一些quantifiers,那些是像匹配一个或多个或匹配只有一个。
我不是很清楚你到底想要做什么,但点''。字符代表正则表达式中的任何字符。
所以正则表达式“^ 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" 。
你能更清楚地定义“我想要的”吗?字母?数字?空格? – gideon 2013-04-08 14:12:07
http://www.regular-expressions.info/quickstart.html阅读“字符类或字符集”部分。另外检查'点匹配(几乎)任何字符' – Crisfole 2013-04-08 14:14:55
它是十六进制字符! – 2013-04-08 14:15:43