2013-07-15 42 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. 在正確的目錄中的命令行,I型:regetron ex3.txt。 ex3.txt包含如下一行:

    /博客/條/ 1 /博客/文章/博客/管理/博客/文章

雖然我已經與項目之間換行符嘗試過。

  1. 我輸入^/blog/article/[0-9]$,下一行沒有任何內容返回。

  2. 我嘗試發佈的第一個解決方案,^\/blog\/articles$,沒有任何返回。

在此先感謝SOers!

+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之前和之後的單個空白。

5

您正則表達式更改爲:

^\/blog\/articles$ 

你需要逃避你的斜槓。

此外,確保ex3.txt文件中每行末尾沒有尾隨空格。

+2

適用於我而不用轉義它們:'perl -E'say 1 if if/blog/articles「=〜m [^/blog/articles $]' '。 – Quentin

+0

啊,我沒有檢查尾隨空格。將盡快做到這一點! – goldisfine

+0

@Quentin它取決於什麼是解析正則表達式。正斜槓通常表示正則表達式中的某些東西(例如:'/ hello/gi'對單詞'hello'進行全局不區分大小寫的搜索) –