如何在不影响#s 的其余部分的情况下正确删除语义.n3 文件中的# 注释?

How to properly remove # comments in a semantic .n3 file without affecting the rest of the #s?

我正在处理从注释中手动清理语义 .n3 和 rdf 文件,并在 C# 中使用 Regex 压缩和漂亮地打印这些文件。

然而 # 是语义文件中用于描述资源的非常常见的字符。

示例代码:

#Processed by Id: cwm.py,v 1.197 2007/12/13 15:38:39 syosi Exp 
        #    using base http://www.prodigi.eu/instances

#  Notation3 generation by
#       notation3.py,v 1.200 2007/12/11 21:18:08 syosi Exp

#   Base was: http://www.prodigi.eu/instances
     @prefix : </ac-schema#> .
    @prefix ins: </instances#> .
    @prefix olanet: <http://www.ibermaticaindustria.com/soluciones/planta-mes-olanet#> .
    @prefix plm: <http://hms.ifw.uni-hannover.de/#> .
    @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

    ins:everyone     a <http://xmlns.com/foaf/0.1/Group>;
         :canSee ins:public;
         rdfs:member <http://127.0.0.1/OslcOlanetProvider/api/producer/01>,

[...]

你可以试试这个:

^\s*#.*$

并替换为空

假设,评论将以 # 开头,或者它只能以 \r 或 \n 或 \t 或 \f \v 或 space

Explanation

将每个文件读取为字符串并调用以下方法并再次写入文件。

示例代码:

using System;
using System.Text.RegularExpressions;
..........
...........
    public String removeHash(String input)
    {
        string pattern = @"^\s*#.*$";
        string substitution = @"";

        RegexOptions options = RegexOptions.Multiline;

        Regex regex = new Regex(pattern, options);
        string result = regex.Replace(input, substitution);
        return result;
    }