在我的xsd架构中,有一个特定的正则表达式<xs:pattern value="(?!TR)[A-Z]{2}"/>
模式会导致错误。我想忽略'TR'并匹配所有其他国家/地区代码。虽然正则表达式在几个在线编辑器中运行良好,但Eclipse说:
InvalidRegex:模式值'(?!TR)[A-Z] {2}'不是有效的正则表达式。报告的错误是:'当前选项设置不支持此表达式。'
尽管它是一个简单的表达式,但无法弄清楚为什么它无法验证。有了这个错误,我无法将xsd文件部署到服务总线。关于aclipse本身还是其他问题?
所有建议都非常感谢!
答案 0 :(得分:1)
XML Schema regex flavor不支持外观。正则表达式的非外观版本是
[A-SU-Z][A-Z]|[A-Z][A-QS-Z]
或者,使用character class subtraction:
[A-Z-[T]][A-Z]|[A-Z][A-Z-[R]]
请参阅regex demo
请注意,我在演示中只使用了^
和$
,因为那里的风味是PCRE。在XSD pattern
中,默认情况下锚定正则表达式,不需要^
和$
。
模式详情:
[A-SU-Z]
(或[A-Z- [T]])- any uppercase ASCII letter other than
T` [A-Z]
- 任何大写的ASCII字母|
- 或[A-Z]
- 任何大写的ASCII字母[A-QS-Z]
(或[A-Z-[R]]
) - 除R
以外的任何大写ASCII字母