2013-01-24 62 views
0

我正在創建一個Python正則表達式以匹配特定模式:模式始終以任何大寫或小寫字母開頭,後面可能有任意數量的字母或數字並始終在一段時間內結束(.)。字母后跟一些字母或數字以句點結尾

例如,這個模式將匹配有問題的標籤(如:Q42.)的行HTML代碼:

<p>Q42. Which of the following newspapers, if any, do you read on a regular 
    basis? Please select all that apply:</p> 
<p>NY Times</p> 
<p>Chicago Tribune</p> 

編輯:
我試過[a-zA-Z]\W*\.
,要怎麼說我是任何字母上限或下限,後面跟隨任意數字或字母的上限或下限,或數字後面跟一個句點。

編輯:
我只是想測試渡過整條生產線包含這些字符或沒有。只尋找TrueFalse

+3

你到目前爲止嘗試過什麼?什麼沒有用?什麼是預期的輸出?例如,我們很樂意幫助您修復迄今爲止編寫的代碼,但無效。 –

+1

在你的示例輸入中使用「O」代替「Q」肯定會出錯... – geoffspear

+1

我試過'[a-zA-Z] \ W * \' – Johnston

回答

1

關閉:

\b[a-zA-Z]\w*\. 

應該這樣做。

\W意味着「任何字符除了字母數字,所以你需要的對面,\w

\b是一個單詞邊界,以確保我們在單詞的開頭開始比賽。

+0

我錯了嗎?我不認爲這是行得通的: '>>> print re.search(「\ b [a-zA-Z] \ w * \。」,t)' '沒有' '>>> t' ''

Q42。下列哪些報紙,如果有的話,您是否閱讀過正規的\ n 基礎?請選擇所有適用的選項:

' – Johnston

+0

@ user974407:您需要使用帶有正則表達式的原始字符串:'r「\ b [a-zA-Z] \ w * \。」',否則'\ b'會被誤解作爲退格字符。 –

+0

謝謝。這確實有效。你是對的。雖然技術上WillOEM的答案會更好地匹配我的問題,但我會使用您的問題,因爲我的問題標籤可能會在其中加上下劃線。我仍然不完全理解'\ b'的全部概念。這與WillOEM的有何不同? – Johnston

3

嘗試:

[a-zA-Z][a-zA-Z0-9]*\.

應當指出的是,\w無線會匹配字母數字字符和下劃線。

+0

我想看看這行是否包含這些字符。 – Johnston

+0

好的,呃。我不確定你是否試圖拉出整條線,而不是隻是布爾測試它。 – woemler

+0

只是布爾測試它。 – Johnston

相關問題