我需要一个.NET程序的配置文件。此文件用于配置对正则表达式。正则表达式属于节的层次结构。
Section1
SubsectionA
regular expression
regular expression
SubsectionB
regular expression
regular expression
Section2
(etc.)
或以Markdown格式
# Section1
## SubsectionA
regular expression
regular expression
无论如何,我想要一种配置文件格式,其中正则表达式文字不需要转义。
什么配置文件格式支持这一点?即使是YAML也需要转义。
我上面展示的两个示例--即缩进文本文件和Markdown --是可以的,但不符合标准。
发布于 2021-09-19 23:23:13
XML中的CDATA部分应该这样做。
这里有一个关于它的堆栈溢出帖子:https://stackoverflow.com/questions/2784183/what-does-cdata-in-xml-mean
我记得我花了一段时间才懂得如何使用它们。DOM解析器有用于创建CDATA部分的专用指令,但没有用于读取它们的等效语句。读取是透明的,您只需读取包含CDATA部分的元素的内容,就可以返回文字文本。
下面是我曾经做过的代码检查器的输入数据文件中的一个示例。它允许使用正则表达式定义有问题的代码片段的形式。
<IssueBuster type="Basic" name="Suspicious lambdas" skip="true">
<Description>
<!-- See https://stackoverflow.com/questions/2465040/using-lambda-expressions-for-event-handlers -->
A lambda expression is used for event handlers which inhibits unsubscribing.
</Description>
<Regex><![CDATA[\+\=\s*\([^\s\,]+\,\s*[^\s\)]+\)\s*=>]]></Regex>
<SkipFileNames>
<!-- If any of these inner texts appears in a file path, this buster will ignore that file. -->
<FileName>SMMdataComponent\DeltaPlusGenerator\TestForm.cs</FileName>
<FileName>Toolchain\Validate-TranslationEnums</FileName>
<FileName>Tools\JcSimulator</FileName>
<FileName>Tools\AR3toGps</FileName>
<FileName>Tools\XMLConverter</FileName>
<FileName>GitManipulator.cs</FileName>
</SkipFileNames>
</IssueBuster>
请注意,CDATA采用以下形式:
<![CDATA[your_literal_text]]>
无论您在内部方括号中放入什么内容,都将逐字返回。
结束这一点:在不太可能的情况下,您必须在内容中包含一个]>序列,您可以在第二个之后拆分内容]并创建两个连续的CDATA部分。这可以很容易地递归实现。
发布于 2021-09-20 06:32:47
发布于 2021-09-20 23:44:27
似乎是一种足够简单的格式;只需编写自己的自定义解析器,将纯文本文件(可能就像您的第一个示例)反序列化到对象模型中即可。这可能需要几十行代码。
您有一个简单的、特定于领域的问题要解决;为什么要用一堆通用的约束和要求来满足某种标准格式呢?它给你什么好处?您已经花费了更多的时间寻找一个现有的库,而不是仅仅编写代码所需的时间。
https://softwareengineering.stackexchange.com/questions/432048
复制相似问题