2017-05-16 65 views
1

我試圖在Python中正則表達式中搜索一些模式。在Python中的正則表達式中,這個序列'[[A-Z] [a-z]]'是什麼意思?

我們知道如果我們使用該模式,'[A-Za-z] +',這意味着查找包含大寫字母A到Z或小寫字母a到z的字符序列。 所以我的一行代碼(其次是回答)是,

>>> re.findall('[A-Za-z]+', 'This is my area!') 
['This', 'is', 'my', 'area'] 

當我嘗試了一些其他模式「[AZ] [AZ] +」它返回一個空列表,一行代碼是如下,

>>> re.findall('[[A-Z][a-z]]+', 'This is my area!') 
[] 

所以,當我在一個字符集內使用兩個序列,什麼樣的模式被創建? 請指導。

+2

你想用第二種模式實現什麼? –

+0

@ C-Otto我只是在試驗。 –

回答

6

發動機將治療[[A-Z][a-z]]+爲:

  • [[A-Z]作爲第一個字符類,它允許任何大寫字母(A-Z)或[。把它看成是[\[A-Z],而不是在那裏[轉義
  • [a-z]作爲第二字符類,這將使任何小寫字母(az)
  • ]+允許一個或多個]

所以它將匹配[b]Aa]Aa]]]]]]]等,並不會匹配你的字符串'這是我的區域!'

要進一步發揮它,你可以試試這個regex101 demo

方括號嵌套:

爲了更好地瞭解方括號的嵌套如何在正則表達式工作的,考慮另一個例子[[[ABC]]]

一旦左方括號被找到([)指示字符類的開始,然後所有後續打開的方括號[被視爲轉義\[,直到遇到方括號結尾爲止]表示字符類的結尾。

來測試它,看看這些例子:

  • [[[ABC]]][\[ABC]相同接着]{2}。示例A]]

  • [[[[ABC]]]][\[ABC]其次是]{3}相同。示例[]]]

  • [[[[[ABC]]]]][\[ABC]其次是]{4}相同。示例A]]]]

希望這有助於!

+0

謝謝,那個正則表達式鏈接真的很有幫助! –

相關問題