Regex 如何简化我的正则表达式
如何简化我的正则表达式以获取包含以下内容的URL:Regex 如何简化我的正则表达式,regex,url,routes,Regex,Url,Routes,如何简化我的正则表达式以获取包含以下内容的URL: de-[.+] em-[.+] empresa-[.+] area-[.+] 例如,以任何顺序 /home/de-xpto/area-xpto/empresa-xpto 或 或 等等 还有一个正则表达式,如果列表中没有任何一个,我可以识别它 \/home\/([de|area|em|empresa]*-([^\/]+))\/([de|area|em|empresa]*-([^\/]+))\/([de|area|em|empresa]*-([
de-[.+]
em-[.+]
empresa-[.+]
area-[.+]
例如,以任何顺序
/home/de-xpto/area-xpto/empresa-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]*-([^\/]+))
谢谢您的正则表达式包含带有
|
交替符号的字符类,这是错误的。必须使用分组构造(…)
来匹配可选的字符序列
也就是说,你很可能需要
\/home(?:\/(?:de|em(?:presa)?|area)-[^\/]+)+
这是一本书
-匹配\/home
/home
-匹配一个或多个以下序列:(?:\/(?:de | em(?:presa)?| area)-[^\/]+)+
-一个\/
符号/
-要么(?:de|em(?:presa)?area)
要么de
要么em
要么empresa
area
-文字-
-
-1+除[^\/]+
/
如果您需要将这些URL作为完整字符串进行匹配,请添加
^
(在开始处)和$
(在结尾处)锚定。可能?Wiktor,谢谢。可以告诉我如何制作相同的正则表达式,但现在,它不包含列表吗?我试着把^放进去,但不起作用。你说没有列表是什么意思?在正则表达式中没有列表这样的概念。括号内有一组备选方案。这不是您要求的吗?例如:正则表达式匹配此:/home/de xpto/em xpto。现在我想要一个匹配,如果有一个不包含在列表中[de | em | empresa |等]。。。示例:/home/de xpto/xpto/area xptoTo要匹配不等于其他文本的文本,请使用类似(?:(?!de|em(?:persa)?)的标记*
\/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]*-([^\/]+))
\/home(?:\/(?:de|em(?:presa)?|area)-[^\/]+)+