2012-12-09 18 views
-1
content = 'abcdd' 


import re,os,sys 
def test(): 
    print content 
    list = re.findall(r'[.\n]+',content) 
    print list 

if __name__ == '__main__': 
    test() 

我知道'。'代表除了 '\ n' 任何charatersDoesnot'[。 n]'是否代表任何字符?

所以[。\ n]應該代表任何字符

但結果是[]

爲什麼

你能幫助我嗎?

謝謝你在avdanvce!

回答

6

.內字符類[]失去了「所有字符(除了換行符或不依賴於標誌)」的特殊含義,並且只是一個普通的句號.

所以[.\n]只匹配句號.或換行符。

如果你想匹配任何字符(沒有例外),一個技巧是形成一個補充字符類的字符類,例如, [\s\S]。當語言的正則表達式不支持DOTALL選項時這非常有用,這使得.匹配任何字符。

但是,因爲Python支持DOTALL選項(re.DOTALL),所以你可以使用它。

請注意,對於Python,.僅排除\n。對於其他語言,它可能會排除更多:Javascript

+0

謝謝你...沒關係 – user1292717

+0

[\ S \ s]非常完美! – user1292717

1

得到的一切:

content = 'abcdd' 

import re,os,sys 
def test(): 
    print content 
    list = re.findall(r'.+', content, re.DOTALL) 
    print list 

if __name__ == '__main__': 
    test() 

結果:

>>> 
abcdd 
['abcdd'] 

你需要使用DOTALL(這意味着.也將意味着\n

0

documentation

特殊字符在集合內部失去其特殊含義。例如,對於 示例,[(+ *)]將匹配任何文字字符'(','+', '*'或')'。

嘗試使用'.|\n'來代替,或者如前所述,使用re.DOTALL。

相關問題