当前位置:  开发笔记 > 后端 > 正文

使用"OR"条件的正则表达式

如何解决《使用"OR"条件的正则表达式》经验,为你挑选了1个好方法。

我可以使用一些帮助来编写正则表达式.在我的Django应用程序中,用户可以点击以下URL:

http://www.example.com/A1/B2/C3

我想创建一个允许接受以下任何一个有效URL的正则表达式:

http://www.example.com/A1  
http://www.example.com/A1/B2  
http://www.example.com/A1/B2/C3  

我猜我需要使用"OR"条件,但是我无法让我的正则表达式进行验证.有什么想法吗?

更新:到目前为止这是正则表达式.请注意,我没有包含" http://www.example.com "部分 - Django为我处理.我只关心验证1,2或3个子目录.

^(\w{1,20})|((\w{1,20})/(\w{1,20}))|((\w{1,20})/(\w{1,20})/(\w{1,20}))$

Andre Bossar.. 5

跳过|,使用?()

http://www\.example\.com/A1(/B2(/C3)?)?

如果你用一个模式替换A1-C3:

http://www\.example\.com/[^/]*(/[^/]*(/[^/]*)?)?

说明:

它匹配以每个字符串开头的字符串 http://www.example.com/A1

它可以匹配额外的/B2,甚至是额外的/C3,但/C3只有匹配,当有一个/B2

[^/]* (尽可能多的非斜线)

如果您需要特殊捕获组中的A1-C3,您可以使用:

http://www\.example\.com/([^/]*)(/([^/]*)(/([^/]*))?)?

将给(groupnumber: content):

matches: 0: (http://www.example.com/dir1/dir2/dir3)
1: (dir1)
2: (/dir2/dir3)
3: (dir2)
4: (/dir3)
5: (dir3)

你可以在这里在线查看或获得这个工具(是的它是免费的,它甚至用Lisp写的......).



1> Andre Bossar..:

跳过|,使用?()

http://www\.example\.com/A1(/B2(/C3)?)?

如果你用一个模式替换A1-C3:

http://www\.example\.com/[^/]*(/[^/]*(/[^/]*)?)?

说明:

它匹配以每个字符串开头的字符串 http://www.example.com/A1

它可以匹配额外的/B2,甚至是额外的/C3,但/C3只有匹配,当有一个/B2

[^/]* (尽可能多的非斜线)

如果您需要特殊捕获组中的A1-C3,您可以使用:

http://www\.example\.com/([^/]*)(/([^/]*)(/([^/]*))?)?

将给(groupnumber: content):

matches: 0: (http://www.example.com/dir1/dir2/dir3)
1: (dir1)
2: (/dir2/dir3)
3: (dir2)
4: (/dir3)
5: (dir3)

你可以在这里在线查看或获得这个工具(是的它是免费的,它甚至用Lisp写的......).

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有