2012-12-17 37 views
0

什麼是正則表達式從以下行提取1944年的正則表達式:本學期

vol. 9, no. 3, pp. 185-197, 1944 

1944年基本上是公開的,我正在試圖提取的一年。我改變數字在1900年和2010年之間

回答

2

如果它始終是字符串中的最後一部分,他們可能會使用$也表明,與去年應始終爲4位數字,因此您使用d{4}。 因此,你想要的正則表達式應爲:

\d{4}$

而且如果你想測試你的正則表達式,有一個漂亮整潔的工具在這裏:http://pagecolumn.com/tool/pregtest.htm,它也有右側所列的規則。 :)

+0

但是,如果你有類似以下內容的話,它是否會確保它不會導致頁碼? 9,沒有。 3,pp。1985-1997,1944' – Amar

+0

在末尾添加一個'$',它將確保它。所以讓它成爲'[1-9] [0-9] {3} $'。如果你想測試你的正則表達式,這裏有一個非常簡潔的工具:http://www.pagecolumn.com/tool/pregtest.htm,它也有右側的規則。 :) – Amar

-1

嘗試捕捉4一起:

\d{4} 
+1

如果書中有1000頁或更多頁面? –

+0

@ tim-cooper mate我認爲用戶只需要問一年字符串。 –

+0

@ tim-cooper好的,現在我明白了你的意思是:'vol。 9,沒有。 3,第1850-1970頁,1944年。是的,你說得對...... –

1

你需要一個更好的約束,但也許這:

,\s+(19\d\d|200\d|2010) 

你知道一個特定的引文風格,爲例? (MLA,APA等)

1

假設今年將始終是最後一個:

\d{4}$ 
1

匹配1900和2010之間的任何數字:

(19\d\d|200\d|2010) 

如果日期是經常上線的最後一個項目:

(19\d\d|200\d|2010)$ 

如果有可能以後它的東西,但它的總是在一頁之後立即寫出:

pp?\.\s*[-\d]+,\s*(19\d\d|200\d|2010) 

注意:設計正則表達式時,通常是ve對於可以測試的項目有很大的選擇很重要,所以你可以看到可能的輸入中可能會有什麼變化。一個測試項目本身通常不足以設計防彈正則表達式。

-1

好了,我懂了工作使用這樣的:

\b[1-9][0-9]{3}\b 

這符合1000年至1999年之間的數字,我知道了「年」之前的數字不會是大

+1

但它確保它不會導致頁碼,如果你有如下的東西:'卷。 9,沒有。 3,pp。1985 - 1997年,1944年' – Amar

+0

頁碼可以超過1000,對不對? – Amar