Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正则表达式-包括冒号_C#_Regex_Visual Studio 2008_.net 3.5 - Fatal编程技术网

C# 正则表达式-包括冒号

C# 正则表达式-包括冒号,c#,regex,visual-studio-2008,.net-3.5,C#,Regex,Visual Studio 2008,.net 3.5,我想使用正则表达式来匹配我收到的字符串的前12个字符。我正在接收字符串,我想验证要丢弃的字符串和要保留的字符串。一旦我验证了字符串,我就会根据字符串中的信息实例化一个对象 在我的例子中,我想检查一个特定的字符(a)、八个数字、一个冒号,然后检查B | C和D。这个模式识别我想要使用的字符串。但是,以下模式不匹配,我怀疑这是由于冒号 if(Regex.IsMatch(my_string,"A[0-9]{8,}:(B|C)D")) 我想让它匹配,其中零是任何数字0-9,B可以与C互换。我需要验证冒

我想使用正则表达式来匹配我收到的字符串的前12个字符。我正在接收字符串,我想验证要丢弃的字符串和要保留的字符串。一旦我验证了字符串,我就会根据字符串中的信息实例化一个对象

在我的例子中,我想检查一个特定的字符(a)、八个数字、一个冒号,然后检查B | C和D。这个模式识别我想要使用的字符串。但是,以下模式不匹配,我怀疑这是由于冒号

if(Regex.IsMatch(my_string,"A[0-9]{8,}:(B|C)D"))
我想让它匹配,其中零是任何数字0-9,B可以与C互换。我需要验证冒号是否存在,因为有些情况下字符串可能格式不正确

应通过正则表达式模式的字符示例

A00000000:BD

这个正则表达式应该有效。一些建议:

  • {8,}
    匹配8个或更多字符
  • 整个正则表达式还将匹配较长字符串的子字符串(即
    “XYZA12345678:CDEFG”
    )。如果你不想那样,锚定你的正则表达式
  • (B | C)
    可替换为
    [BC]
所以试试这个:

if (Regex.IsMatch(my_string,"^A[0-9]{8}:[BC]D"))

如果失败,您所说的
是什么意思?它到底是如何失败的?文本中有
A | B,后跟C
,然后是
B | C,后跟D
。是哪一个?不确定为什么在
{8,}
中使用逗号,而不仅仅是
{8}
,但您的正则表达式似乎与您给出的字符串匹配。将字符串传递给它失败了,其他研究表明,我必须使用\来比较冒号,但当您说“验证冒号是否存在”时,这只会转义字符串这是否意味着您也要匹配
A00000000BD
,并可能在中添加
?如果您愿意,您也可以将[0-9]更改为\dwanted@spots:否。
\d
也匹配非ASCII数字。他似乎不希望这样。虽然这在理论上是可靠的,但我无法与这个案例相匹配,我正在检查的这部分在一个较长字符串的前面,我想在D处停止验证。我正在使用这个正则表达式检查我的字符串的一部分,然后再将其撕成碎片。这个检查是为了过滤掉不需要的字符串。@SimonJohnson:这正是这个正则表达式所做的,以及
IsMatch()
方法的作用。一定还有别的问题。请编辑您的问题,并发布代码示例,让我们重现问题。