gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 04:16:38 28 4
gpt4 key购买 nike

我正在使用 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()getMinimumMatchLength(),它会很容易添加一个以相同方式工作的 getMaximumMatchLength()

关于c# - 计算与 xsd (C#) 中的正则表达式匹配的字符串的最大可能长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26649539/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com