C#中的匹配模式

时间:2012-08-21 18:16:27

标签: c# .net regex

我对C#中的模式有这个问题。

我有这种模式:

1111100000000000000000000

这是{1}}的25 1或0。

row应匹配同一位置上具有相同1的每个字符串,但如果patternstring具有0的位置{1}},则应忽略该{1}}。 pattern唯一应该检查的是1是否是正确的位置。

离。

模式应匹配:

pattern

但不是:

1111100000000000000000000

1111100000001000100010001

1111111110000111100111100

我试过这个,用正则表达式:

0111110000101110001011000

1011111010101010101000000

我希望有人可以给我一个想法。

谢谢!

1 个答案:

答案 0 :(得分:2)

只需将字符串转换为int并使用AND运算符

即可
int pattern = Convert.ToInt32("1111100000000000000000000", 2);
int[] nums = new int[]{
    Convert.ToInt32("1111100000000000000000000", 2),
    Convert.ToInt32("1111100000001000100010001", 2),
    Convert.ToInt32("1111111110000111100111100", 2),
    Convert.ToInt32("0111110000101110001011000", 2),
    Convert.ToInt32("1011111010101010101000000", 2),
};

foreach (var num in nums)
{
    bool b = (pattern & num)==pattern;
    Console.WriteLine(b);
}

<强>输出:

True
True
True
False
False