如何使用Regex模式获取以下文本?

时间:2016-04-29 13:49:40

标签: c# regex

我跟随我的文字,

File <a class='ub link' data-menu-identifier='files' data-url-identifier='/files/detail/n0tlz'>Medical bills & LTA.xlsx</a>  was attached to the case by {updatedby} on {updatedon}

我需要的是,我需要正则表达式,这将给予我&#39; n0tlz&#39;从给定的文本。请注意,这不是我需要从此模式中提取的静态内容。

我已达到某种程度但未获得如何获取所需文本;

我有:&#39; / files / detail / n0tlz&#39;其中&#39; / files / detail / {code}&#39;总是在那里,我只想要给定样本{code} = n0tlz

中{code}的值
 // Extract The filecode 
                    const string pattern = @"files\/detail\/(.*)'>";
                    // Instantiate the regular expression object.
                    var r = new Regex(pattern, RegexOptions.IgnoreCase);
                    // Match the regular expression pattern against a text string.
                    var m = r.Match(fileUpdate.UpdateText);

这里有m值:/ files / detail / n0tlz&#39;&gt; 但我只是想要&#39; n0tlz&#39;我觉得我太近了,只需要最后一步就是获取代码值。

2 个答案:

答案 0 :(得分:1)

// Extract The filecode 
                    const string pattern = @"files\/detail\/(.*)'>";
                    // Instantiate the regular expression object.
                    var r = new Regex(pattern, RegexOptions.IgnoreCase);
                    // Match the regular expression pattern against a text string.
                    var m = r.Match(fileUpdate.UpdateText);
                    if (m.Success && m.Groups.Count == 2 )
                    {
                        m.Groups[1].Value; // This is the expected result 
                    }

答案 1 :(得分:0)

如果data-url-identifier='/files/detail/n0tlz'>始终包含&#39;&gt;你可以用它作为分隔符。让你现有的  files\/detail\/进入files\/detail\/ '>

现在要捕获特定值,您可以使用简单的捕获组 (.*)将捕获零和无限时间之间的任何字符。

将2合并为files\/detail\/(.*)'>

修改

  

但是我有:/ files / detail / n0tlz&#39;&gt;我只想要&#39; n0tlz&#39;我能得到它吗?

嗯,是的。或者更详细一点,你已经拥有它

而不是使用var尝试定义类型本身。在这种情况下,这将是Match。看一下这些属性,你会发现它包含的内容远远多于整个匹配。

  

群组将包含您的价值