Regex xml架构检查因模式匹配而失败
我在xsd模式中有这样的样板代码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"/>
<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
范围的捕获组(注意XSD模式正则表达式不支持非捕获组)9
<xs:pattern value="1\.([1-9]|1[0-2])"/>
注意转义的“.”,否则您将匹配1$12之类的东西。我认为
[1-1]
可能是允许的,但1
似乎更简单。你太快了。。。我对这个问题稍加修改。这不仅仅是10,它是计数。。。e、 现在是12岁,将来可能是20岁。我没有弄清楚的是[1-9]|[1-1][0-0]为什么不起作用