C# 检查表达式是否与正则表达式匹配
在C语言中,我有两个字符串:C# 检查表达式是否与正则表达式匹配,c#,regex,C#,Regex,在C语言中,我有两个字符串:[I/text]和[S/100x20] 因此,第一个是[I/,后面是文本,最后是] 第二个是[S/后跟一个整数,然后是x,然后是另一个整数,最后是] 我需要检查给定的字符串是否与其中一种格式匹配。我尝试了以下方法: (?<word>.*?) and (?<word>[0-9]x[0-9]) (?*)和(?[0-9]x[0-9]) 但这似乎不起作用,我缺少[I/..]和[S/..]部分 我怎样才能做到这一点呢?遵循正则表达式就可以做到这一点。
[I/text]
和[S/100x20]
因此,第一个是[I/
,后面是文本,最后是]
第二个是[S/
后跟一个整数,然后是x
,然后是另一个整数,最后是]
我需要检查给定的字符串是否与其中一种格式匹配。我尝试了以下方法:
(?<word>.*?) and (?<word>[0-9]x[0-9])
(?*)和(?[0-9]x[0-9])
但这似乎不起作用,我缺少[I/..]
和[S/..]
部分
我怎样才能做到这一点呢?遵循正则表达式就可以做到这一点。匹配整个字符串
"(\[I/\w+\])|(\[S/\d+x\d+\])"
这应该很好:
Regex rex = new Regex(@"\[I/[^\]]+\]|\[S/\d+x\d+\]");
如果[I/text]
中的文本应该只包含字母数字字符,那么@Oleg使用\w
而不是[^\]
会更好。另外,使用+
意味着至少需要一个前面的字符类,并且*
允许类是可选的。根据需要进行调整
和使用:
string testString1 = "[I/text]";
if(rex.IsMatch(testString1))
{
// should match..
}
string testString2 = "[S/100x20]";
if(rex.IsMatch(testString2))
{
// should match..
}
([I/\w+]))
(S/\d+x\d+]
以上工作
用于处理表达式我认为应该有\d+,因为int是必需的。并且在I/之后应该是\w+以仅匹配文本字符。是的。关于
\d+
,您是对的。我不确定文本应该包含什么,这就是为什么我将其保留为[^\]
从技术上讲,*
不应该是+
,因为(根据我阅读OP的方式)预期文本会在那里?对于[I/text],我可以如下使用它:@“[I/*?]…但是。*?和^ \或\w+之间有什么区别?我尝试了一种方法,它接受数字、字母、标点符号、空格……并且至少需要一个字符。但是区别是什么呢?\w
匹配a-z
、0-9
或
中的任何字符,而*?
匹配任何字符,包括特殊字符。最后,[^\]
这表示一个字符类,它匹配非]
字符的任何字符(包括符号)。如果您只想匹配a-z
的字符,则可以使用[a-z]
。我想你把这两个例子弄糊涂了。S/后面跟数字很好;请利用它。另外,你的第二个正则表达式缺少开头的[
。