在C#中,我有两个字符串:[I/text]
和[S/100x20]
。检查表达式是否与正则表达式匹配
所以,第一个是[I/
,后面是文本,最后是]
。
,第二个是,随后的整数,然后x
,然后另一个整数[S/
,并在结束]
。
我需要检查给定的字符串是否与其中一种格式匹配。我试过如下:
(?<word>.*?) and (?<word>[0-9]x[0-9])
但是这似乎并没有工作,我错过了[I/...]
和[S/...]
部分。
我该怎么做?
在C#中,我有两个字符串:[I/text]
和[S/100x20]
。检查表达式是否与正则表达式匹配
所以,第一个是[I/
,后面是文本,最后是]
。
,第二个是,随后的整数,然后x
,然后另一个整数[S/
,并在结束]
。
我需要检查给定的字符串是否与其中一种格式匹配。我试过如下:
(?<word>.*?) and (?<word>[0-9]x[0-9])
但是这似乎并没有工作,我错过了[I/...]
和[S/...]
部分。
我该怎么做?
遵循正则表达式来做到这一点。匹配整个字符串
"(\[I/\w+\])|(\[S/\d+x\d+\])"
这应该很好做:如果[I/text]
文本应该只包含字母数字字符,然后@奥列格的使用\w
代替[^\]]
的效果会更好
Regex rex = new Regex(@"\[I/[^\]]+\]|\[S/\d+x\d+\]");
。同样使用+
表示需要至少有一个前面的字符类,并且允许类是可选的。根据需要调整..
及用途:
string testString1 = "[I/text]";
if(rex.IsMatch(testString1))
{
// should match..
}
string testString2 = "[S/100x20]";
if(rex.IsMatch(testString2))
{
// should match..
}
我相信应该有\ d +作为int是必需的。并且在我/应该是\ w +之后才能匹配文本字符。 – Oleg 2013-03-15 15:47:47
是的。你对'\ d +'说得对。我不确定_text_应该包含什么,这就是为什么我把它留作''[^ \]]' – 2013-03-15 15:51:05
从技术上讲,'*'不应该是'+',因为(基于我如何阅读OP )“文本”预计会在那里? – 2013-03-15 15:51:09
[so]有很好的[代码格式](http://stackoverflow.com/editing-help#code);请拿它的优点。另外,你的第二个正则表达式缺少开放'['。 – 2013-03-16 06:46:12
玩我想你混淆了两个例子。 S /后面跟数字 – bjoern 2013-03-15 15:50:22
@ bjoern谢谢。固定。 – Oleg 2013-03-15 16:05:36