gpt4 book ai didi

regex - 拆分 XSD 中的正则表达式模式限制

转载 作者:行者123 更新时间:2023-12-05 04:10:37 26 4
gpt4 key购买 nike

我的 XSD 中有一个正则表达式模式可以解决问题,但可读性很差。

<xs:element name="short_description">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="|^([a-zA-Z0-9áÁâÂàÀäÄåÅöÖòÒóÓôÔøØüÜûÛùÙúÚßíÍïÏîÎìÌñÑÇç.,?()!\/çéÉêÊèÈëË +;&amp;&apos;':&quot;\n\t%#£°€@=«»¦*`´-]){1,}$"/>
</xs:restriction>
</xs:simpleType>
</xs:element>

因此,为了更好的可读性(示例),我尝试将其拆分为以下内容

    <xs:element name="title">
<xs:simpleType>
<xs:restriction base="xs:string">
<!-- Check the title with no limitation to size -->
<xs:pattern value="|^([a-zA-Z0-9áÁâÂàÀäÄåÅöÖòÒóÓôÔøØüÜûÛùÙúÚßíÍïÏîÎìÌñÑÇçéÉêÊèÈëË]){1,}$"/>
<xs:pattern value="|^([.,?()!\/ +;':`´-]){1,}$"/>
<xs:pattern value="|^([&amp;$apos;&quot;]){1,}$"/>
<xs:pattern value="|^([\n\t]){1,}$"/>
<xs:pattern value="|^([%#£°€@=«»¦*]){1,}$"/>
</xs:restriction>
</xs:simpleType>
</xs:element>

重新运行我的 XSD 后,似乎他只在模式分离时查看第一行。

有没有办法让第一个模式(见上文)更具可读性?或者我在第二个例子中做错了什么?

最佳答案

您可以使用 multiple patterns ,但它们之间的关系是或的关系,而不是与:

An XML <restriction> containing more than one <pattern> element gives rise to a single ·regular expression· in the set; this regular expression is an "or" of the ·regular expressions· that are the content of the <pattern> elements.

如果你有[A-Za-z]+然后 [0-9]+ ,这意味着您允许仅包含 1 个或多个字母(第一个)或 1 个以上数字(第二个)的值。这并不意味着您允许由 1 个或多个字母或数字组成的字符串。

在这种情况下,将模式写成单个限制会更安全:

<xs:pattern value="([a-zA-Z0-9áÁâÂàÀäÄåÅöÖòÒóÓôÔøØüÜûÛùÙúÚßíÍïÏîÎìÌñÑÇç.,?()!/çéÉêÊèÈëË +;&amp;&apos;:&quot;\n\t%#£°€@=«»¦*`´-]+)?" />

注意:

  • 要使模式可选(即允许空匹配),将整个模式包含在可选组 ( (<PATTERN>)? ) 中会更安全
  • $apos;应该是 &apos;
  • XML Schema 正则表达式默认锚定,^$不应该使用
  • 要支持 Unicode 字母,您可以考虑只使用 \p{L} Unicode 类别类。

关于regex - 拆分 XSD 中的正则表达式模式限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44202458/

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