【问题标题】:Substitue non-capturing groups for regex in XML Schema?用 XML Schema 中的正则表达式替换非捕获组?
【发布时间】:2017-03-30 04:01:41
【问题描述】:

我正在检查我的第一个自定义 XML 模式,lxml 被表示为元组的表达式捕获,例如“10.1,-900”:

<xs:simpleType name="pair_dec">
    <xs:restriction base="xs:string">
        <xs:pattern value="-?\d+(?:.\d+),-?\d+(?:.\d+)"/>
    </xs:restriction>
</xs:simpleType>

我听说这是因为不支持非捕获组。这是正确的吗?有解决方法吗?

【问题讨论】:

  • 正则表达式本身是错误的,您在分组后缺少?s。

标签: python regex xsd lxml xsd-validation


【解决方案1】:

注意 XSD 正则表达式风格:

  • 不支持非捕获组,但可以替换为捕获组
  • \d 和所有其他速记字符类都支持 Unicode,因此使用 [0-9] 而不是 \d 更安全
  • 必须对点进行转义以匹配文字点

使用

<xs:pattern value="-?[0-9]+(\.[0-9]+)?,-?[0-9]+(\.[0-9]+)?"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 2014-06-19
    • 2010-11-19
    • 2013-06-27
    相关资源
    最近更新 更多