Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex xml架构检查因模式匹配而失败_Regex_Xml_Xsd - Fatal编程技术网

Regex xml架构检查因模式匹配而失败

Regex xml架构检查因模式匹配而失败,regex,xml,xsd,Regex,Xml,Xsd,我在xsd模式中有这样的样板代码 <xs:attribute name="version" use="required"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="1.1"/>

我在xsd模式中有这样的样板代码

      <xs:attribute name="version" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="1.1"/>
            <xs:enumeration value="1.2"/>
            <xs:enumeration value="1.3"/>
            <xs:enumeration value="1.4"/>
            <xs:enumeration value="1.5"/>
            <xs:enumeration value="1.6"/>
            <xs:enumeration value="1.7"/>
            <xs:enumeration value="1.8"/>
            <xs:enumeration value="1.9"/>
            <xs:enumeration value="1.10"/>
            <xs:enumeration value="1.11"/>
            <xs:enumeration value="1.12"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>

我只是想用下面的模式来替换它

<xs:pattern value="1.[1-9]|[1-1][0-2]"/>

它通过1.2或1.6,但因“1.10”而失败。对于lxml.etree.DocumentInvalid:元素“sfd”,属性“version”:[facet”pattern']模式“1.[1-9]|[1-1][0-2]不接受值“1.10”

我认为[1-9]|[1-1][0-2]代表1-9和10-12之间的范围

有什么问题吗?

您的正则表达式(请参阅)匹配的字符串

  • 1.[1-9]
    -以
    1
    开头,然后具有除换行字符以外的任何字符和从
    1
    9
  • |
    -或
  • [1-1][0-2]
    -以
    1
    (注意
    [1-1]
    =
    1
    )开头,然后是一个从
    0
    2
    的数字
你可以用

<xs:pattern value="1\.(1[0-2]|[1-9])"/>

看。请记住XSD模式正则表达式模式必须匹配整个字符串,以下是它匹配的内容:

  • 1
    -匹配
    1
  • \.
    -匹配文字点(
    不带转义符号的字符匹配除换行字符以外的任何字符)
  • (1[0-2]|[1-9])
    -匹配
    10
    11
    12
    或从
    1
    9
    范围的捕获组(注意XSD模式正则表达式不支持非捕获组)
试试括号:

<xs:pattern value="1\.([1-9]|1[0-2])"/>


注意转义的“.”,否则您将匹配1$12之类的东西。我认为
[1-1]
可能是允许的,但
1
似乎更简单。

你太快了。。。我对这个问题稍加修改。这不仅仅是10,它是计数。。。e、 现在是12岁,将来可能是20岁。我没有弄清楚的是[1-9]|[1-1][0-0]为什么不起作用