0

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

输入字符串:

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());
    }
4

2 回答 2

2

你丢失了数字\d

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

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

于 2012-07-28T12:46:53.507 回答
0

尝试使用类似的东西,以下表达式将匹配 ] 和 .vmx 之间的每个类型字符

\](.+?)\.vmx

或者对于像 ][word]/[word].vmx 这样的模式试试

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

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

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

您可以通过http://gskinner.com/RegExr/轻松测试正则表达式输出

在此处输入图像描述

于 2012-07-28T12:52:58.877 回答