我需要一些帮助,使用正则表达式提取以下信息。
这是我的输入字符串“C:\ Yes”
********字符串开头缺少字符,介于两者之间但不在结尾处= 一个奇怪的上标看起来L。***
我需要将“C:\”提取到一个字符串中,将“是”提取到另一个字符串中。
先谢谢。
答案 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];