我想将所有访问者的“单个子目录”指向一个页面,将所有访问者指向“双子目录”到另一个页面。 E.g:
/foo/
/new/
/north/
/1-j4/
所有人都指向1.app,而
/foo/bar/
/new/york/
/north/west/
/1-j4/a_990/
都会指向2.app。
我想我可以用非贪婪的正则表达式匹配来做到这一点,如下:
- url: /(.*?)/$
script: 1.app
- url: /(.*?)/(.*?)/$
script: 2.app
令我困惑的是,/ foo /和/ foo / bar /解析为脚本1.app。 “懒惰”的正则表达式是否强制包含中间/,因为这是获得匹配的唯一方法?我怎么能这样做?我尝试过使用(\ w *?)但得到相同的结果。
答案 0 :(得分:1)
.*?
仍将匹配任意数量的/
,因为.
匹配任何字符,但是换行符(默认情况下)。您需要将regexp建立在一个否定的字符类[^/]*
上,该字符匹配除/
以外的0个或多个字符。
要将目录与一个部分匹配,请使用^([^/]*)/?$
并将其与2匹配,请使用^([^/]*)/([^/]*)/?$
。
请注意,如果您计划在在线Web测试人员中使用这些模式,则必须在大多数模式中使用/
,因为默认情况下他们使用/
符号作为正则表达式分隔符。
答案 1 :(得分:1)
是的,(.*?)
包含斜杠,因此会解析为1.app
。如果先放置2.app
处理程序,它应该按照你想要的那样执行:
- url: /(.*?)/(.*?)/$
script: 2.app
- url: /(.*?)/$
script: 1.app