私は正規表現があまり得意ではありません。誰かがこれらの仕様で正規表現を手伝ってくれますか:
0 ~ 365 または 888 の任意の整数
説明を考えると、この質問は本当に興味深いと思います。数値の字句表現が XSD の観点から考えられる場合、正規表現だけがそれを行うことができる正当なパターンがあります。たとえば、先行ゼロを禁止する必要がある場合があります。
もちろん、このようなシナリオでは、正規表現に対してより多くの議論を行うことができます。質問が求めるものを文字通り取るとany number
、浮動小数点数、倍精度浮動小数点数、および小数 (ビット) が複雑になります。ですから、任意の整数を仮定しましょう。
私はパターンの最適化にあまり時間をかけず、読みやすくすることに重点を置いていましたが、さまざまな実装をテストするために使用される他のオプションとともに、以下に示しています (XSD では、パターンは暗黙的に固定された開始と終了です)。 .
<?xml version="1.0" encoding="utf-8" ?>
<!-- XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com) -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="test">
<xsd:complexType>
<xsd:attribute name="pattern">
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedInt">
<xsd:pattern value="0*([1-2]*[0-9]{1,2}|3[0-4][0-9]|35[0-6]|888)"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="uint">
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedInt"/>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="other">
<xsd:simpleType>
<xsd:union>
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedInt">
<xsd:enumeration value="888"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType>
<xsd:restriction base="xsd:unsignedInt">
<xsd:maxInclusive value="356"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:schema>
そしていくつかの XML:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<test pattern="0000356" uint="0000888" other="0356"/>