为什么我的正则表达式捕获周围的字符?

时间:2014-08-01 23:02:27

标签: ruby regex

我试图将路径元素与ruby中的URL分开。我的网址是:

/cm/api/m_deploymentzones_getDeploymentZones.htm

使用正则表达式:

/\/([^\/]*)\//

匹配为/cm/。我希望只看到cm,因为/个字符被明确排除在捕获组之外。我做错了什么?

我也试图通过以下方式获取下一个路径元素:

/\/[^\/]*\/([^\/]*)\//

然后返回:/cm/api/

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

使用URI.parse()

会更容易
require 'uri'

url = '/cm/api/m_deploymentzones_getDeploymentZones.htm'
parts = URI.parse(url).path.split('/') # ["", "cm", "api", "m_deploymentzones_getDeploymentZones.htm"]

答案 1 :(得分:0)

这是匹配路径组件的正则表达式:

(?<=/).+?(?=/|$)

但是你最好只在/个字符上拆分字符串。你不需要正则表达式。