我几乎是正则表达式的新手。我试图解析CommandLineInterface(CLI)的输出。输出通常是指定路径下的文件和文件夹的内容。以下可能是输出的潜在不同格式。
d:\ARCTest\_MyProject\Sources\CMCore\project.pj subsandbox <CRLF>
<space> d:\ARCTest\_MyProject\Sources\CMInterfaces\project.pj subsandbox <CRLF>
<space> d:\ARCTest\_MyProject\Sources\CMImplementation\project.pj subsandbox <CRLF>
<space> d:\ARCTest\_MyProject\Sources\Übersicht und fragen\project.pj subsandbox <CRLF>
<space> d:\ARCTest\_MyProject\Sources\CMAccess.sln archived 1.15 <CRLF>
<space> d:\ARCTest\_MyProject\Sources\übersicht und fragen.xlsx archived 1.1
对于格式1,在第二行之前有一个CRLF和一个加法空间(我用符号<space>
和<CRLF>
表示这个,请注意这不是实际的一部分输出)。 CRLF可能并不总是出现在输出中,换句话说,它是可选的。前四个是mks文件夹的路径,后两个是mks中的文件。我想要的是指向文件夹的所有匹配(以\ project.pj结尾的那些匹配,包括project.pj),并将其指向文件(以文件归档结束,不包括已归档的文本)。
CMCore/project.pj subproject <CRLF>
CMInterfaces/project.pj subproject <CRLF>
CMImplementation/project.pj subproject <CRLF>
Übersicht und fragen/project.pj subproject <CRLF>
CMAccess.sln archived <CRLF>
übersicht und frögen.xlsx archived
对于格式2,在第二行之前有一个CRLF(我用符号表示这个,请注意这不是实际输出的一部分)。前四个是mks文件夹的路径,后两个是mks中的文件。我想要的是指向文件夹的所有匹配(以\ project.pj结尾的那些匹配,包括project.pj),并将其指向文件(以文件归档结束,不包括已归档的文本)。
我几乎成功地使用rgular表达式^([^\r\n]\w+.+?\.pj)
在两种情况下解析文件夹,但它无法从输出格式1获取第一行。我无法找出解析文件的解决方案两种格式。任何解决方案都会有很大的帮助。
如果我需要提供更多相关信息,请与我们联系。
提前致谢, 乔。
答案 0 :(得分:0)
试试这个:
([\w ]\S+\/*)*\w([\w]+\.(\w+))
using System;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
string patternDir = @"([\w ]\S+\/*)*\w([\w]+\.(pj))";
string pathDir = @"d:\ARCTest\_MyProject\Sources\CMInterfaces\project.pj subsandbox ";
string pathFile = @"CMAccess.sln archived";
Console.WriteLine((Regex.IsMatch(pathDir,patternDir))? "It's dir!" : "It's not a dir");
Console.WriteLine((Regex.IsMatch(pathFile,patternDir))? "It's dir!" : "It's not a dir");
Console.ReadKey();
}
}