0

小さなルーティングシステムを書きましたが、問題があります。私の正規表現はスラッシュを通常の文字列として読み取っていますが、それを機能させる方法がわかりません。例えば:

home/[a-zA-Z0-9_]プロファイルを表示するルートを定義しましたが、 も定義しhome/user/\dました。2 番目のケースをhome/user/45書き留めると、最初のケースを書き留めます。1つの文字列としてかかりuser/45ます。/正規表現を使用してそれを除外する方法。

4

5 に答える 5

1

このようなことを試しましたか?

[^\/]+

またはそれ以上

[a-zA-Z0-9_]+[^\/]+

regexr.comにアクセスして文字列 ( home/user/45) を入力すると、選択のみが行われますhome,user,45(スラッシュを除く/) 。

于 2013-09-10T17:30:28.103 に答える
0

最初のケースでは home/(?!user/)[a-zA-Z0-9_] を試してください

于 2013-09-10T17:30:23.273 に答える
0

次のパターンに一致する必要があります。

/home\/user\/(\\d+)/

そして、次のように置き換えます。

home/user$1

最初の正規表現では、区切り記号であるスラッシュを使用しました。区切り文字が必要ない場合は、最初と最後のスラッシュを削除します。

于 2013-09-10T17:32:40.273 に答える
0

これについて正規表現を信頼しているので、パターンを制限する必要があります。また、パターンを読みやすくするもう 1 つのトリックは、別のパターン文字を使用することです。

|^/home/(\w+)/?$|
|^/home/user/(\d+)/?$|
于 2013-09-10T17:40:35.487 に答える
0

次のいずれかを試してください。

<?php

$path = '/home/user/45';
preg_match_all('/home\/(\w+)/', $path, $matches);
/* Would set $matches to Array:
(
[0] => Array
    (
        [0] => home/user
    )

[1] => Array
    (
        [0] => user
    )
)
*/

preg_match_all('/home\/(\w+)/(\d+)/', $path, $matches);
/* Would set $matches to Array:
(
[0] => Array
    (
        [0] => home/user/45
    )

[1] => Array
    (
        [0] => user
    )

[2] => Array
    (
        [0] => 45
    )
)

?>
于 2013-09-10T17:34:32.650 に答える