2016-03-03 61 views
-1

我在python初學者,當我運行下面的正則表達式,它被卡住我的Mac:錯誤的正則表達式在Python

re.search("^[A-Z]+([A-Z\w]+|\s)+$","Diploma in Fine Art from Royal School of Art & Design") 

請讓我知道,如果我做的任何錯誤。

+2

「卡住」是什麼意思?它可以運行嗎?你有錯誤嗎?你有意想不到的輸出? –

+0

這意味着災難性的回溯。 –

+0

對不起,如果我不清楚。運行該命令後,我無法得到任何答案。感謝Wiktor提供解決方案。 – user1487744

回答

2

正則表達式寫入的方式很容易導致災難性的回溯問題,即([A-Z\w]+|\s)+部分由於嵌套的+量詞而引起該問題。您必須尋找一個

^[A-Z][a-z]*(\s+[A-Z][a-z]*)+$ 

regex demo

它匹配

  • ^ - 串
  • 開始
  • [A-Z][a-z]* - 一個大寫的字
  • (\s+[A-Z][a-z]*)+ - 一個或多個大寫的用空格分隔的ASCII字
  • $ - 字符串結尾。

提示:總是測試你的模式與不匹配的模式(比如你的模式),因爲它們是最有問題的。

+0

感謝您的解決方案。我試圖寫出一個正則表達式,它與每個單詞都有大寫字母的單詞序列相匹配(例如「皇家學校」)。 – user1487744

+0

現在檢查它,它應該按預期工作。 –