2014-01-29 28 views
0

我有很多或很長的正則表達式|和|或:在分割多行正則表達式 - 它停止工作

re.findall(u'\W\s[A-Z]$|(com.|d\.)|\(?adj.\)?|(all\.$)|^(Pays|région|lieu-dit|chef- 
lieu|canal|collégiale|ruisseau|bâtiment|hôpital|roi de|(bailliage|canton)(s?))|site|afflu(a|e)nt|forêt|village|église|état(s?)', 
su) 

我試着用\分裂:

re.findall(u'\W\s[A-Z]$\ 
     |(com.|d\.) \ 
     |\(?adj.\)? \ 
     |(all\.$) \ 
     |^(Pays|région|lieu-dit \ 
     |chef-lieu 
     etc 

當我像這樣拆分它時,它會停止工作,但Spyder不會出現任何錯誤 - 它只會停止輸出。

回答

2

您在線路開始介紹的空白,以及在一些結尾:

>>> u'\W\s[A-Z]$\ 
...  |(com.|d\.) \ 
...  |\(?adj.\)? \ 
...  |(all\.$) \ 
...  |^(Pays|région|lieu-dit \ 
...  |chef-lieu ' 
u'\\W\\s[A-Z]$  |(com.|d\\.)  |\\(?adj.\\)?  |(all\\.$)  |^(Pays|r\xe9gion|lieu-dit  |chef-lieu ' 

如果要拆分到多個源代碼行的字符串,使用連續的字符串:

re.findall(u'\W\s[A-Z]$' 
     u'|(com.|d\.)' 
     u'|\(?adj.\)?' 
     u'|(all\.$)' 
     u'|^(Pays|région|lieu-dit' 
      u'|chef-lieu|canal|collégiale|ruisseau|bâtiment|hôpital' 
      u'|roi de|(bailliage|canton)(s?))' 
     u'|site|afflu(a|e)nt' 
     u'|forêt|village|église|état(s?)', 
    sn 
) 

其中Python會自動在編譯時加入對您:

>>> (u'\W\s[A-Z]$' 
...   u'|(com.|d\.)' 
...   u'|\(?adj.\)?' 
...   u'|(all\.$)' 
...   u'|^(Pays|région|lieu-dit' 
...    u'|chef-lieu|canal|collégiale|ruisseau|bâtiment|hôpital' 
...    u'|roi de|(bailliage|canton)(s?))' 
...   u'|site|afflu(a|e)nt' 
...   u'|forêt|village|église|état(s?)') 
u'\\W\\s[A-Z]$|(com.|d\\.)|\\(?adj.\\)?|(all\\.$)|^(Pays|r\xe9gion|lieu-dit|chef-lieu|canal|coll\xe9giale|ruisseau|b\xe2timent|h\xf4pital|roi de|(bailliage|canton)(s?))|site|afflu(a|e)nt|for\xeat|village|\xe9glise|\xe9tat(s?)' 

或者使用鬆散正則表達式語法:

re.findall(u''' 
     \W\s[A-Z]$ 
    |(com.|d\.) 
    |\(?adj.\)? 
    |(all\.$) 
    |^(Pays|région|lieu-dit 
     |chef-lieu|canal|collégiale|ruisseau|bâtiment|hôpital 
     |roi de|(bailliage|canton)(s?)) 
    |site|afflu(a|e)nt 
    |forêt|village|église|état(s?)''', su, flags=re.VERBOSE) 

re.VERBOSE標誌改變分析器忽略所有文字的空白;上述表達式被解析爲好像所有空格,製表符和換行符都不存在。任何#評論也被剝離,從#到換行。

+0

非常感謝你,它的作品! – user3241376