XML 架构正则表达式空字符串
XML Schema regex empty string
我有一个带有正则表达式限制的 XML 架构,它匹配三个不同的选项并且看起来类似于:
somestring|someotherstring|
- 一些字符串,或者
- 一些其他字符串,或
- 空字符串
我的问题是 xmllint 不喜欢这个正则表达式。它给出了以下错误:
regexp error : failed to compile: expecting a branch after |
因为环境原因,我被迫遵守xmllint。
我的问题是,在 XSD 中使用正则表达式匹配空字符串的其他选项是什么?
据我了解,XSD 正则表达式中不提供负面展望,我对其他选项一筹莫展。
您可以使用可选组:
(somestring|someotherstring)?
^ ^^
它将匹配这两个词或一个空字符串。在 XSD 中,所有模式都是自动锚定的,因此不需要额外的操作符。
我认为 Wiktor 的回答很好 (+1),但您要求提供更多答案,因此这里有一些备选方案:
正则表达式解决方案
适用于 Xerces-J 但不适用于 xmllint:
|somestring|someotherstring
somestring||someotherstring
somestring|someotherstring|
与 Xerces-J 一起工作和 xmllint:
(somestring|someotherstring)? <!-- Wiktor's answer -->
()|somestring|someotherstring
somestring|()|someotherstring
somestring|someotherstring|()
非正则表达式解决方案
与 Xerces-J 一起工作和 xmllint:
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value=""/>
<xs:enumeration value="somestring"/>
<xs:enumeration value="someotherstring"/>
</xs:restriction>
</xs:simpleType>
我有一个带有正则表达式限制的 XML 架构,它匹配三个不同的选项并且看起来类似于:
somestring|someotherstring|
- 一些字符串,或者
- 一些其他字符串,或
- 空字符串
我的问题是 xmllint 不喜欢这个正则表达式。它给出了以下错误:
regexp error : failed to compile: expecting a branch after |
因为环境原因,我被迫遵守xmllint。
我的问题是,在 XSD 中使用正则表达式匹配空字符串的其他选项是什么?
据我了解,XSD 正则表达式中不提供负面展望,我对其他选项一筹莫展。
您可以使用可选组:
(somestring|someotherstring)?
^ ^^
它将匹配这两个词或一个空字符串。在 XSD 中,所有模式都是自动锚定的,因此不需要额外的操作符。
我认为 Wiktor 的回答很好 (+1),但您要求提供更多答案,因此这里有一些备选方案:
正则表达式解决方案
适用于 Xerces-J 但不适用于 xmllint:
|somestring|someotherstring
somestring||someotherstring
somestring|someotherstring|
与 Xerces-J 一起工作和 xmllint:
(somestring|someotherstring)? <!-- Wiktor's answer -->
()|somestring|someotherstring
somestring|()|someotherstring
somestring|someotherstring|()
非正则表达式解决方案
与 Xerces-J 一起工作和 xmllint:
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value=""/>
<xs:enumeration value="somestring"/>
<xs:enumeration value="someotherstring"/>
</xs:restriction>
</xs:simpleType>