使用正则表达式从字符串中提取数据

时间:2009-08-29 14:56:52

标签: c# regex

我需要一些帮助,使用正则表达式提取以下信息。

这是我的输入字符串“C:\ Yes”

********字符串开头缺少字符,介于两者之间但不在结尾处= 一个奇怪的上标看起来L。***

我需要将“C:\”提取到一个字符串中,将“是”提取到另一个字符串中。

先谢谢。

3 个答案:

答案 0 :(得分:3)

我不打扰正则表达式。太多的工作,我太可能搞砸了。

var x = @"C:\Yes";

var root = Path.GetPathRoot(x);  // => @"C:\"
var file = Path.GetFileName(x);  // => "Yes"

答案 1 :(得分:1)

以下正则表达式在第一个捕获组中返回C:\,其余在第二个捕获组中返回:

 ^(\w:\\)(.*)$

这是寻找:一个完整​​的字符串(^…$)以字母开头(\w,尽管[a-z]可能对Windows驱动器号更准确),然后是{{1 }}。所有其余的(:\)都在第二组中捕获。

请注意,这不适用于UNC路径。如果您正在使用路径,最好的办法是不使用字符串和正则表达式,而是使用.*中的API。在那里找到的类已经提供了你想要的功能。

答案 2 :(得分:0)

Regex r = new Regex("([A-Z]:\\)([A-Za-z]+)");
Match m = r.Match(@"C:\");

string val1 = m.Groups[0];
string val2 = m.Groups[1];