我有一个这样的文字行:
SOMENAME(KEYONE(任何字符) - KEYTWO(由数字组成) - KEYTHREE - KEYFOUR) - KEYFIVE
我需要一个正则表达式来提取密钥。钥匙之间的分隔符是“
spaceLineSpace
”。
我得到了这个工作的一切exept KEYONE。问题是KEYONE可以包含任何一个
空格或线条(不是两个同时)像这样:
问题是第一个关键,我到目前为止尝试了这两个表达式:
如果我无法完成这项工作,我将改为使用stringsplit。
感谢所有帮助! :)
完整代码:
Regex emailregex = new Regex("(?<DOCCLASS>[^( - $ ]+) - (?<DOCNO>[^ - ]+) - (?<DOCSHEET>[^\\s-\\s]+) - (?<DOCREV>[^\\s-\\s)]+)");
string title = "MY%20TITLE.DOCM%20(10 003%20-%201202827%20-%201%20-%20A2)%20-%201";
String decodedTitle = Uri.UnescapeDataString(title);// //Server.UrlDecode(documentSharepointTitle);
Match m = emailregex.Match(decodedTitle);
if (m.Success)
{
Console.WriteLine("DOC_CLASS: " + m.Groups["DOCCLASS"].Value);
Console.WriteLine("DOC_NO: " + m.Groups["DOCNO"].Value);
Console.WriteLine("DOC_SHEET: " + m.Groups["DOCSHEET"].Value);
Console.WriteLine("DOC_REV: " + m.Groups["DOCREV"].Value);
Console.WriteLine("DOC_TYPE: " + m.Groups["DOCTYPE"].Value);
}
else
{
Console.WriteLine(decodedTitle + " , does not match document title pattern.");
}
Console.WriteLine();
System.Console.WriteLine("Press Enter to Continue...");
System.Console.ReadLine();
答案 0 :(得分:0)
试试这个:
^\w+\s\(([\w\s-]+)\s-\s(\d+)\s-\s(\w+)\s-\s(\w+)\)\s-\s(\w+)$
顺便说一句......如果你提供一些例子会更容易。我不打算自己创造它们,所以如果它按预期工作,我就不能真正检查它。