繁体   English   中英

用可选的换行符对多行条目进行正则表达式解析

[英]Regex parsing of a multi-line entry with optional newline characters

我几乎是regex的新手。 我正在尝试解析CommandLineInterface(CLI)的输出。 输出通常是指定路径下文件和文件夹的内容。 以下可能是输出的潜在不同格式。

CLI输出格式1

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),并匹配所有指向文件的文件(那些以归档单词结尾,但不包括归档文本)。

CLI输出格式2

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),并匹配所有指向文件的文件(那些以归档单词结尾,但不包括归档文本)。

在两种情况下,我都使用规则表达式^([^\\r\\n]\\w+.+?\\.pj)来成功解析文件夹,但未能从输出格式1提取第一行。能够找到一种解决方案来解析两种格式的文件。 任何解决方案都会有很大帮助。

如果需要提供更多信息,请告诉我。

预先感谢,乔。

尝试这个:

([\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();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM