2012-08-29 66 views
3

我試圖做一個積極的前瞻來匹配給定URL中的對象ID,而不管該對象ID在URL中的位置。這個想法是匹配直到'/'或字符串的結尾。下面是一些示例字符串(粗體是我想匹配的ID):積極向前匹配'/'或字符串結尾

  • /對象/ obj_asd-1234-特殊
  • /對象/ obj_xyz-15434 /會員
  • /對象/ obj_aasdfaeastd-15d44 /其他/ ASDF

使用此:(?+)對象/ OBJ _(?= /)匹配後兩者,因爲它們都具有一個尾隨斜線。我讀過lookahead支持正則表達式作爲匹配字符,所以我試過這個對象/ obj _(。+?)(?=(/ | $))無濟於事。有什麼想法嗎?

回答

1

你並不需要使用正前瞻:

/objects/([^/]+).* 

然後,第一組將持有價值你的ID。

這裏是在Python的例子:

>>> import re 
>>> p = re.compile('/objects/([^/]+).*') 

>>> p.match("/objects/obj_asd-1234-special").group(1) 
'obj_asd-1234-special' 
>>> p.match("/objects/obj_xyz-15434/members").group(1) 
'obj_xyz-15434' 
>>> p.match("/objects/obj_aasdfaeastd-15d44/other/asdf").group(1) 
'obj_aasdfaeastd-15d44' 
5

試試這個:

/objects/(.*?)(/|$) 

它根本/objects/和斜線或EOF

之間的非貪婪匹配
相關問題