用于在Python中验证xsd:ID字符串的正则表达式?

时间:2012-09-08 15:46:38

标签: python regex xsd

有人请建议使用正则表达式来验证符合xsd:ID(link)的字符串。

  • 类型xsd:ID用于唯一标识XML文档中元素的属性。

  • xsd:ID值必须是xsd:NCName。 这意味着它必须以字母或下划线开头,并且只能包含字母,数字,下划线,连字符和句点。

  • xsd:ID带有几个额外的约束:

    • 无论属性的名称或元素名称如何,它们的值在XML实例中必须是唯一的。

    • 复杂类型不能包含多个xsd:ID类型的属性,也不能包含任何派生类型 来自xsd:ID。

    • xsd:ID属性不能指定默认值或固定值。


我想的是:

reg=re.compile('^([a-zA-Z]|_)(\d|_|-|\.)*')  
reg.match(mystring)

这看起来不错吗?

1 个答案:

答案 0 :(得分:2)

最简单的方法是使用两个字符类,后者带有*乘数:

re.compile(r'^[a-zA-Z_][\w.-]*$')

\w已包含[a-zA-Z0-9_]。没有必要在这些组周围放置组,但您确实希望将表达式锚定到开头和结尾(^$)以确保您验证整个字符串,而不仅仅是它