我怎样才能简化我的正则表达式以获取包含以下内容的网址:
de-[.+]
em-[.+]
empresa-[.+]
area-[.+]
以任意顺序,例如
/home/de-xpto/area-xpto/empresa-xpto
或
/home/area-xpto/empresa-xpto/de-xpto
或
/home/empresa-xpto/em-xpto/de-xpto
等...
还有一个正则表达式,我可以确定是否没有列表中的任何一个。
\/home\/([de|area|em|empresa]*-([^\/]+))\/([de|area|em|empresa]*-([^\/]+))\/([de|area|em|empresa]*-([^\/]+))\/([de|area|em|empresa]*-([^\/]+))\/([de|area|em|empresa]*-([^\/]+))\/([de|area|em|empresa]*-([^\/]+))
由于
答案 0 :(得分:1)
你的正则表达式包含带有fig = pylab.figure()
ax = pylab.gca()
ax.plot(x, y)
ax.set_yscale('log')
交替符号的字符类,这是错误的。您必须使用分组构造 |
来匹配替代的字符序列。
这就是说,你很可能需要
(...)
这是regex demo。
\/home(?:\/(?:de|em(?:presa)?|area)-[^\/]+)+
- 匹配\/home
/home
- 匹配以下1个或多个序列:
(?:\/(?:de|em(?:presa)?|area)-[^\/]+)+
- \/
符号/
- (?:de|em(?:presa)?|area)
或de
或em
或empresa
area
- 文字-
-
- 除[^\/]+
如果您需要将这些网址作为完整字符串进行匹配,请添加/
(在开始时)和^
(在结尾处)锚点。