content = 'abcdd'
import re,os,sys
def test():
print content
list = re.findall(r'[.\n]+',content)
print list
if __name__ == '__main__':
test()
我知道 '。' 表示除 '\n' 以外的任何字符
所以 [.\n] 应该代表任何字符
但结果是 []
为什么
你能帮助我吗 ?
谢谢你在avdanvce!
.内部字符类[]失去了“所有字符(除了换行符或不取决于标志)”的特殊含义,并且只是一个普通的句号.。
所以[.\n]只匹配句号.或换行符。
如果你想匹配任何字符(无例外),一个技巧是形成一个互补字符类的字符类,例如[\s\S]. 当语言的正则表达式不支持 DOTALL 选项时,这很有用,它可以.匹配任何字符。
但是,由于 Python 支持 DOTALL 选项(re.DOTALL),所以您可以使用它。
请注意,对于 Python,.仅排除\n. 对于其他语言,它可能会排除更多:Javascript。
得到一切:
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)