2

次の一連のURIがあると仮定しましょう。

A:/ user / a / b / c

B:/ user / a / b / f / d

C:/ user / a / b / e

D:/ user / a / k / r

ルールBを除くすべてのルールに一致するPythonの正規表現が必要です。したがって、 / user / aで始まるすべてのURIに一致する必要がありますが、 dで終わるURIは除外する必要があります。

よろしくお願いします!

更新:パスのセグメントは単一の文字ではなく、単語全体です。たとえば、dは「送信」にすることができます。

4

4 に答える 4

3

次のようなものはどうですか?

^/user/a/.*[^d]$

「/user/ a /で始まり、他の任意の数の文字、最後の文字の順に読みます。これはdであってはなりません。

于 2012-10-09T15:09:47.343 に答える
1

これを試してみてください:

(?!.*\/d)\/user\/a.*

(?!。* / d)->否定的な先読みアサーション、基本的には/dで終わらないという

男に魚を教える:

http://rubular.com/

テスト文字列を入力し、正規表現を試してみてください:)

于 2012-10-09T15:17:27.760 に答える
1

Jimanの回答に基づくと、私の質問に対する正確な解決策は次のとおりです。

(?!.*d)\/user/a/.*

dとaは単語全体に対応していることに注意してください。したがって、例は次のようになります。

(?!.*send)\/user/myapp/.*
于 2012-10-09T15:34:36.763 に答える
0

おそらく、使用する方が明確です。

a = '/user/a/b/f/d'
b = s.strip('/').split('/')
if b[:2] == ['user', 'a'] and b[-1] != 'd':
    pass # whatever

/または、 'sで分割していない場合は、次のようにします。

if a.startswith('/user/a') and not a.endswith('d'):
    pass # whatever
于 2012-10-09T15:13:14.757 に答える