Regex 正向前瞻匹配'/';或字符串的结尾

Regex 正向前瞻匹配'/';或字符串的结尾,regex,regex-lookarounds,Regex,Regex Lookarounds,我正在尝试进行正向前瞻,以匹配给定URL中的对象ID,而不管该对象ID在URL中的位置如何。其思想是匹配到“/”或字符串末尾。以下是一些示例字符串(粗体是我要匹配的ID): /对象/obj_asd-1234-special /对象/obj_xyz-15434/members /objects/对象AASDFAASTD-15d44/other/asdf 使用这个:objects/obj_(+?)(?=/)匹配后两者,因为它们都有一个尾部斜杠。我读到lookahead支持将regex作为匹配字符

我正在尝试进行正向前瞻,以匹配给定URL中的对象ID,而不管该对象ID在URL中的位置如何。其思想是匹配到“/”或字符串末尾。以下是一些示例字符串(粗体是我要匹配的ID):

  • /对象/obj_asd-1234-special
  • /对象/obj_xyz-15434/members
  • /objects/对象AASDFAASTD-15d44/other/asdf

使用这个:objects/obj_(+?)(?=/)匹配后两者,因为它们都有一个尾部斜杠。我读到lookahead支持将regex作为匹配字符,所以我尝试使用objects/obj|(.+?)(?=(/|$)没有任何效果。有什么想法吗?

您不需要使用积极的前瞻:

/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'
试试这个:

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

它只是在
/objects/
和斜杠或eof之间进行非贪婪匹配

这个正则表达式匹配eof或某个字符(即/)

(?
(?<=\/objects\/obj_)(.+?)(?=\/|$)