Regex拿起一场比赛,但没有看到另一场比赛

时间:2012-07-28 12:42:04

标签: c# windows .net

我有一个正则表达式应该*拾取到结果字符串:

输入字符串:

Vmid        Name                             File                           Guest OS       Version   Annotation
3      TinyCore Linux   [datastore1] TinyCore Linux/TinyCore Linux.vmx   otherLinuxGuest   vmx-08
4      Debain6          [datastore1] Debain6/Debain6.vmx                 ubuntu64Guest     vmx-08

正则表达式:

[]][ A-Za-z /.]+.vmx [ ]

正则表达式匹配字符串的下一部分:

] TinyCore Linux/TinyCore Linux.vmx

但也应匹配:

] Debain6/Debain6.vmx

我的代码如下:

private void regexTest_Click(object sender, EventArgs e)
{
    Regex regex = new Regex("[]][ A-Za-z /.]+.vmx [ ]");
    MatchCollection match = regex.Matches(input);

    foreach (Match matchvalue in match)
    {
        MessageBox.Show(matchvalue.ToString());
    }

2 个答案:

答案 0 :(得分:2)

您丢失了数字\d

你的正则表达式:[]][\dA-Za-z /.]+.vmx [ ]

和我的升级\][\dA-Za-z\s/.]+\.vmx

答案 1 :(得分:0)

尝试使用类似的东西,下面的表达式将匹配]和.vmx

之间的每个类型字符
\](.+?)\.vmx

或类似的模式] [word] / [word] .vmx尝试

\](.+)?\/(.+?)\.vmx

或一般(。)替换为特定匹配字符

\]([a-z0-9A-Z-_\s\/]+)?\.vmx

您可以通过http://gskinner.com/RegExr/

轻松测试正则表达式输出

enter image description here