排除表达'?!'无法验证

时间:2017-04-07 07:53:40

标签: regex xml eclipse xsd

在我的xsd架构中,有一个特定的正则表达式<xs:pattern value="(?!TR)[A-Z]{2}"/>模式会导致错误。我想忽略'TR'并匹配所有其他国家/地区代码。虽然正则表达式在几个在线编辑器中运行良好,但Eclipse说:

  

InvalidRegex:模式值'(?!TR)[A-Z] {2}'不是有效的正则表达式。报告的错误是:'当前选项设置不支持此表达式。'

尽管它是一个简单的表达式,但无法弄清楚为什么它无法验证。有了这个错误,我无法将xsd文件部署到服务总线。关于aclipse本身还是其他问题?

所有建议都非常感谢!

it works as desired

1 个答案:

答案 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字母