2013-07-15 7 views
5

^$の記号を使用して、次に示すのは/blog/articlesだけです。

私はこれが含まれているex3.txt作成しました:

/blog/article/1 
/blog/articles 
/blog 
/admin/blog/articles 

と正規表現を:

^/blog/articles$ 

は、私が 'regetron' を使用して、それを入力したときのように、仕事には表示されません。 (see learning regex the hard way)次の行には出力がありません。

これは私の正確な手順です:

  1. 正しいディレクトリにあるコマンドラインでは、私が入力します。regetronのex3.txtを。私はエントリ間の改行とそれを試してみましたが、

    /ブログ/記事/ 1 /ブログ/記事/ブログ/管理/ブログ/記事

:ex3.txtは以下で1行が含まれています。

  1. ^/blog/article/[0-9]$と入力し、次の行には何も表示されません。

  2. 投稿された最初の解決策を試します。^\/blog\/articles$と返されません。

あらかじめありがとうございます!

+1

あなたの正規表現はどの言語で使用されていますか? – zzzzBov

+0

どの言語ツールを使用していますか? – Anirudha

+0

この正規表現を試してください: '^ \/blog \/articles * $' – anubhava

答えて

1

更新内容に基づいて、^と表示され、$が適切な演算子ではない可能性があります。それらはそれぞれ行の最初と最後に一致します。これが何をするか

(?:^|\s)(\/blog\/articles)(?:$|\s)

(?:^|\s)   Matches, but does not capture (?:), a line start (^) OR (|) a whitespace (\s) 
(\/blog\/articles) Matches and captures /blog/articles. 
(?:$|\s)   Matches, but does not capture (?:), a line end ($) OR (|) a whitespace (\s) 

これは、両方のために働くあなたが同じ行にマッチさせたい複数の文字列を持っている場合は、より多くのこのような何かをする必要があります場合によっては、/blog/articlesの前後の1つの空白に一致する(ただしキャプチャしない)ことに注意してください。

5
にあなたの正規表現を変更し

:あなたのスラッシュをエスケープする必要が

^\/blog\/articles$ 

また、ex3.txtファイルの各行の最後にスペースがないことを確認してください。

+2

エスケープせずに私のために働きます: 'perl -E'say 1"/blog/articles "=〜m [^/blog/articles $] ' '。 – Quentin

+0

ああ、私は後続のスペースをチェックしていません。できるだけ早く! – goldisfine

+0

@Quentinそれは正規表現を解析しているかによって異なります。フォワードスラッシュは、通常、正規表現(例: 'hello/gi'の大文字小文字を区別しない検索では 'hello'という単語を検索します)を意味します。 –

関連する問題