在Vb.net中使用正则表达式返回invaild数据

时间:2013-10-21 10:34:33

标签: regex vb.net

以下是我的代码

  Dim ReadTagdata As String = "Info,Reply:Axis 0, Channel G, Timestamp 2eff, SpecificID f00ba36d, CRC d01ed74e, ReadAddress 000a, Data: 7a7a 3433 3132 3334 3536 3738 3637 2c31 352c 302e 3036 2c2e 3930 2d31 2e32 322c 526f 756e 642c 462c 5653 322c 7665 7279 2067 6f6f 642c 676f 6f64 2c76 6572 7920 676f 6f64 2c6d 6564 6975 6d2c 4852 442c 3137 3530 3234 3837 3333 2c32 352d 4175 672d 3130 2c33 2e39 342c 332e 3932 2c32 2e38 322c 332e 3839 2c35 362c 3131 2e35 2c34 332c 6d65 6469 756d 2c70 6f69 6e74 6564 2c2c 2c2c 2c2c 4e2c 2c2c 2c2c 2c2c 2c2c"

    Dim Specificcol As MatchCollection = Regex.Matches(ReadTagdata, "SpecificID ([a-f0-9]{8})")
    For Each m As Match In Specificcol
        Dim g As Group = m.Groups(1)
        MsgBox(g.Value.ToString)
    Next


    Dim DataCol As MatchCollection = Regex.Matches(ReadTagdata, "Data: ([A-Za-z0-9\-]+) ", RegexOptions.IgnoreCase)
    For Each mdata As Match In DataCol
        Dim gdata As Group = mdata.Groups(1)
        Dim data As String = gdata.Value.ToString
        MsgBox(data)
    Next

在上面的代码中我试图检索,需要来自ReadTagData字符串的数据与常规 表达 但是使用以下代码,我只能在数据字符串之后只检索1个值,即 7a7a, 而不是那样,我想要“DATA:”字符串

之后的所有字符串

Dim DataCol As MatchCollection = Regex.Matches(ReadTagdata,“Data:([A-Za-z0-9 - ] +)”,RegexOptions.IgnoreCase)

提前致谢

1 个答案:

答案 0 :(得分:0)

这个正则表达式:

Data:\s([\w\s\-])+

匹配这个:

Data: 7a7a 3433 3132 3334 3536 3738 3637 2c31 352c 302e 3036 2c2e 3930 2d31 2e32 322c 526f 756e 6-42c 462c 5653 322c 7665 7279 2067 6f6f 642c 676f 6f64 2c76 6572 7920 676f 6f64 2c6d 6564 6975 6d2c 4852 442c 3137 3530 3234 3837 3333 2c32 352d 4175 672d 3130 2c33 2e39 342c 332e 3932 2c32 2e38 322c 332e 3839 2c35 362c 3131 2e35 2c34 332c 6d65 6469 756d 2c70 6f69 6e74 6564 2c2c 2c2c 2c2c 4e2c 2c2c 2c2c 2c2c 2c2c

此正则表达式的Group 1:

Data:\s([\w\s\-]+)

匹配这个:

7a7a 3433 3132 3334 3536 3738 3637 2c31 352c 302e 3036 2c2e 3930 2d31 2e32 322c 526f 756e 6-42c 462c 5653 322c 7665 7279 2067 6f6f 642c 676f 6f64 2c76 6572 7920 676f 6f64 2c6d 6564 6975 6d2c 4852 442c 3137 3530 3234 3837 3333 2c32 352d 4175 672d 3130 2c33 2e39 342c 332e 3932 2c32 2e38 322c 332e 3839 2c35 362c 3131 2e35 2c34 332c 6d65 6469 756d 2c70 6f69 6e74 6564 2c2c 2c2c 2c2c 4e2c 2c2c 2c2c 2c2c 2c2c

注意:

  

\ w =字母数字字符加上“_”

     

\ s =空格字符

     

\ - =“ - ”字符


为了在futre中测试更多正则表达式,我将向您推荐一个我之前开发的简单的RegEx测试器应用程序,这就是我设法执行您需要的这些表达式的方式:

enter image description here

enter image description here

在此处下载源代码:http://elektrostudios.tk/RegEx.NET.zip