匹配'/'或字符串结尾的正向预测

时间:2012-08-29 00:21:50

标签: regex regex-lookarounds

我正在尝试做一个积极的预测以匹配给定URL中的对象ID,无论该对象ID在URL中的何处。想要匹配,直到字符串的'/'或结尾。以下是一些示例字符串(粗体是我想要匹配的ID):

  • /对象/的 obj_asd-1234-特殊
  • /对象/的 obj_xyz-15434 /成员
  • /对象/的 obj_aasdfaeastd-15d44 /其他/ ASDF

使用这个:objects / obj _(。+?)(?= /)匹配后两个,因为它们都有一个尾部斜杠。我读到前瞻支持正则表达式作为匹配字符,所以我尝试了这个对象/ obj _(。+?)(?=(/ | $))无济于事。有什么想法吗?

3 个答案:

答案 0 :(得分:7)

试试这个:

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

它只是在/objects/与斜线或eof之间进行非贪婪的匹配

答案 1 :(得分:2)

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

/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'

答案 2 :(得分:1)

此正则表达式匹配EOF或某个字符(即/)。

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

这里是demo