这个正则表达式正确吗xsd:anyURI

2024-10-03 06:20:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在实现一个函数(在Python中),它检查字符串与xsd:anyURI的一致性。在

根据Schema Central的说法,只有检查重复、连续和非连续的#字符和{}字符,然后是非十六进制字符0-Ff。在

到目前为止,我有一些类似的东西,而且似乎在起作用:

if uri.search('(%[^0-9A-Fa-f]+)|(#.*#+)')

多个“#”符号的第二个表达式可能有错误。在


Tags: 函数字符串searchif表达式schema符号uri
2条回答

如果您的目标是根据Schema中央解析器的要求使用排除regex,那么您就快到了。前半部分(不包括后面没有两个十六进制数字的百分号)最好使用一个否定的前瞻性断言来解决;下半部分可以,但是您可以在不影响结果的情况下丢弃最后一个重复指示符:

(%(?![0-9A-F]{2})|#.*#)

用大小写独立(i标志)编译regex,这样就可以开始了。在

推荐阅读:Python标准库的chapter on Regular Expression Operation Syntax。在

我最近不得不在没有消极展望的情况下这样做,下面的方法似乎奏效了:

(%.?[^0-9A-Fa-f]|#.*#)

相关问题 更多 >