10

オブジェクト ID が URL 内のどこにあるかに関係なく、特定の URL 内のオブジェクト ID と一致するように先読みを試みています。「/」または文字列の終わりまで一致するという考えです。いくつかのサンプル文字列を次に示します (太字は一致させたい ID です)。

  • /オブジェクト/ obj_asd-1234-special
  • /オブジェクト/ obj_xyz-15434 /メンバー
  • /オブジェクト/ obj_aasdfaeastd-15d44 /その他/asdf

これを使用すると、 objects/obj_(.+?)(?=/) は、両方とも末尾にスラッシュがあるため、後者の 2 つに一致します。先読みが一致する文字として正規表現をサポートしていることを読んだので、この objects/obj_(.+?)(?=(/|$)) を試してみましたが、役に立ちませんでした。何かご意見は?

4

3 に答える 3

7

これを試して:

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

/objects/スラッシュまたはeofのいずれかとの間で貪欲でない一致を行うだけです。

于 2012-08-29T11:56:53.567 に答える
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'
于 2012-08-29T00:27:35.603 に答える