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

Python 这个正则表达式对于xsd:anyURI正确吗,python,regex,url,Python,Regex,Url,我正在实现一个函数(在Python中),该函数检查字符串是否符合xsd:anyURI 根据这一点,检查重复、连续和非连续的#字符和%后跟除十六进制字符0-Ff以外的其他字符才有意义 到目前为止,我有一些类似的东西,它似乎正在发挥作用: if uri.search('(%[^0-9A-Fa-f]+)|(#.*#+)') 多个“#”符号的第二个表达式可能有错误 如果您的目标是根据模式中心解析器的要求使用一个排除正则表达式,那么您就差不多做到了。前半部分(不包括不后跟两个十六进制数字的百分号)最好使

我正在实现一个函数(在Python中),该函数检查字符串是否符合
xsd:anyURI

根据这一点,检查重复、连续和非连续的
#
字符和
%
后跟除十六进制字符0-Ff以外的其他字符才有意义

到目前为止,我有一些类似的东西,它似乎正在发挥作用:

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

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

如果您的目标是根据模式中心解析器的要求使用一个排除正则表达式,那么您就差不多做到了。前半部分(不包括不后跟两个十六进制数字的百分号)最好使用负前瞻断言来解决;下半部分很好,但您可以放弃最后一个重复指示器而不影响结果:

(%(?![0-9A-F]{2})|#.*#)
编译具有大小写独立性(
i
flag)的正则表达式,就可以开始了


推荐阅读:Python标准库。

如果您的目标是根据Schema Central解析器的要求创建一个排除正则表达式,那么您就差不多做到了。前半部分(不包括不后跟两个十六进制数字的百分号)最好使用负前瞻断言来解决;下半部分很好,但您可以放弃最后一个重复指示器而不影响结果:

(%(?![0-9A-F]{2})|#.*#)
编译具有大小写独立性(
i
flag)的正则表达式,就可以开始了


推荐阅读:Python标准库。

我最近不得不在没有负面展望的情况下完成这项工作,以下内容似乎很有效:


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

我最近不得不在没有负面展望的情况下完成这项工作,下面的方法似乎有效:


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

查看
str.find
不接受正则表达式字符串…查看
str.find
不接受正则表达式字符串。。。