1

view.phpasvalueでGET変数と一致する文字列の正規表現を取得しようとしfileています[a-zA-Z0-9_]*。参考までに、このURLを次のように書き直す必要があります/file/value

私がしたがうまくいかなかったこと:^view.php\?.*?(&|\?)file=([a-zA-Z0-9_]*).*$

何が機能しますか?

4

3 に答える 3

1

@Lindrianが尋ねたように、これはURLで始まる文字列に対して実行されますview.pyか、それともURL全体に対して実行されますか?前者の場合、この単純な正規表現は私の意見ではうまく機能するはずです(ここではPythonを使用):

In [1]: import re

In [2]: s = 'view.php?foo=bar&file=blablah123&anotherfoo=anotherbar'

In [3]: re.sub(r'view\.php\?.*\bfile=(\w+).*', '/file/\g<1>', s)
Out[3]: '/file/blablah123'
于 2013-01-06T14:48:32.510 に答える
1
  • view.php\?ここであなたは受け入れviewaphp?ます。それは大丈夫ですか?あなたはおそらく意味しview\.phpます。また、最後に疑問符を付けますが、次のようになります。
  • (&|\?)ここでも、アンパサンドまたは疑問符のいずれかを適用します。view.php??file=...したがって、またはのようなものが必要ですview.php?.*&file=...

必要なものはおそらく次のようなものです(テストされていませんが、空のファイル名を許可しないように+に注意してください)。

^view\.php\?(?:file=)|(?:.*&file=)([a-zA-Z0-9_]+)(?:&|$)

于 2013-01-06T10:23:54.097 に答える
1

先頭^とは、文字列全体がview.phpで始まることを意味しますが、これはおそらく正しくありません。fileまた、正規表現では、それが最後のGETなどであると想定しています。

この正規表現はfile、任意の文字列のgetvalueと一致する必要があります

view\.php\?.*?\bfile=(\w*)\b
于 2013-01-06T10:35:19.083 に答える