码迷,mamicode.com
首页 > 编程语言 > 详细

python 正则表达式点号与'\n'符号的问题

时间:2014-12-31 09:52:38      阅读:257      评论:0      收藏:0      [点我收藏+]

标签:

遇到了一个小虫,特记录之。

1.正则表达式及英文的处理如下:

>>> import re
>>> b=‘adfasdfasf<1safadsaf>23wfsa<13131>‘
>>> pat = re.compile(‘<.*?>‘)
>>> pat.findall(b)
[‘<1safadsaf>‘, ‘<13131>‘]

 

2. 换成中文貌似就没反应了

>>> msg="<Fault warning -- \xb4\xed\xce\xf3!\n\n\xb2\xfa\xc6\xb7\xb1\xe0\xba\xc5\xb1\xd8\xd0\xe8\xce\xa8\xd2\xbb,\xd0\xc2\xb1\xe0\xba\xc53123\xb6\xd4\xd3\xa6\xb5\xc4\xb2\xfa\xc6\xb7\xd2\xd1\xbe\xad\xb4\xe6\xd4\xda!\n\xc8\xe7\xb9\xfb\xc4\xfa\xca\xd4\xcd\xbc\xcd\xa8\xb9\xfd\xb8\xb4\xd6\xc6\xc0\xb4\xc9\xfd\xbc\xb6\xb2\xfa\xc6\xb7\xd4\xf2\xcb\xb5\xc3\xf7\xb4\xcb\xb2\xfa\xc6\xb7\xd2\xd1\xbe\xad\xb4\xe6\xd4\xda\xc9\xfd\xbc\xb6\xb0\xe6\xa3\xac\xc7\xeb\xc1\xf4\xd2\xe2\xa1\xa3: ‘‘>"
>>> pat.findall(msg)
[]

仔细分析了下貌似因为其中的\n字符!

甚为不解,又try了一把:

>>> msg =‘<\r>asdasf<asdfaf>‘
>>> pat.findall(msg)
[‘<\r>‘, ‘<asdfaf>‘]
>>> msg=‘<\n>adf<afd>‘
>>> pat.findall(msg)
[‘<afd>‘]
>>> msg=‘<\s>adaf<asdfa>‘
>>> pat.findall(msg)
[‘<\\s>‘, ‘<asdfa>‘]
>>> msg=‘<\n>asdfasf<asfa>‘
>>> pat.findall(msg)
[‘<asfa>‘]

确实点号无法匹配特殊字符‘\n‘!

这里找到了说明。

 

. 匹配除 "\n" 之外的任何单个字符。要匹配包括 ‘\n‘ 在内的任何字符,请使用象 ‘[.\n]‘ 的模式。

 

 

 

3.[.\n]的尴尬情况

>>> pat= re.compile(‘<[.\n]*?>‘)
>>> pat.findall(msg)
[‘<\n>‘]
>>> msg
‘<\n>asdfasf<asfa>‘
>>> msg=‘<\nasdfs>adaf<adaf>‘
>>> pat.findall(msg)
[]

  

暂时没有更好的解

 

python 正则表达式点号与'\n'符号的问题

标签:

原文地址:http://www.cnblogs.com/Tommy-Yu/p/4194991.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!