2024-10-03 06:20:07 发布
网友
我正在实现一个函数(在Python中),它检查字符串与xsd:anyURI的一致性。在
xsd:anyURI
根据Schema Central的说法,只有检查重复、连续和非连续的#字符和{}字符,然后是非十六进制字符0-Ff。在
#
到目前为止,我有一些类似的东西,而且似乎在起作用:
if uri.search('(%[^0-9A-Fa-f]+)|(#.*#+)')
多个“#”符号的第二个表达式可能有错误。在
如果您的目标是根据Schema中央解析器的要求使用排除regex,那么您就快到了。前半部分(不包括后面没有两个十六进制数字的百分号)最好使用一个否定的前瞻性断言来解决;下半部分可以,但是您可以在不影响结果的情况下丢弃最后一个重复指示符:
(%(?![0-9A-F]{2})|#.*#)
用大小写独立(i标志)编译regex,这样就可以开始了。在
i
推荐阅读:Python标准库的chapter on Regular Expression Operation Syntax。在
我最近不得不在没有消极展望的情况下这样做,下面的方法似乎奏效了:
(%.?[^0-9A-Fa-f]|#.*#)
如果您的目标是根据Schema中央解析器的要求使用排除regex,那么您就快到了。前半部分(不包括后面没有两个十六进制数字的百分号)最好使用一个否定的前瞻性断言来解决;下半部分可以,但是您可以在不影响结果的情况下丢弃最后一个重复指示符:
用大小写独立(
i
标志)编译regex,这样就可以开始了。在推荐阅读:Python标准库的chapter on Regular Expression Operation Syntax。在
我最近不得不在没有消极展望的情况下这样做,下面的方法似乎奏效了:
(%.?[^0-9A-Fa-f]|#.*#)
相关问题 更多 >
编程相关推荐