计算与 xsd 中的正则表达式匹配的字符串的最大可能长度 (C#)

2024-04-14

我正在使用 XSD,并且可以以字符串形式从 XSD 访问模式。一个例子:

<xsd:pattern value="[0-9]{8}"/>

给我 C# 字符串

string pattern = "[0-9]{8}";

根据我从 XSD 获取的模式字符串(可以是任何有效的 XSD 模式条目),我尝试计算出 XML 中字段内容的最大可能长度。

在这个简单的例子中,它显然是 8 - 我可以通过检查 {n} 并假设这就是长度来算出。在其他模式中,我还可以检查 * 或 + 并假设无界 - 但我正在寻找一种可用于执行此操作的更通用的方法。

请注意,不保证模式字符串与 .Net 的 Regex 类兼容。

我还可以访问 XmlSchemaPatternFacet 类,这是我首先用来解析 XSD 的类(如果有帮助的话)。

谢谢你提供的所有帮助


您几乎肯定需要解析正则表达式才能实现此目的。例如,您可以使用 Saxon 中的开源正则表达式解析器(它实现了正确的正则表达式方言)。这将创建一个子表达式树,您可以添加一个方法来计算树中每个节点的最大匹配长度。这Operation代表树中节点的类,已经(在 9.6 中)具有方法getMatchLength() and getMinimumMatchLength(),并且很容易添加getMaximumMatchLength()其工作原理相同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算与 xsd 中的正则表达式匹配的字符串的最大可能长度 (C#) 的相关文章

随机推荐