博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 正则表达式点号与'\n'符号的问题
阅读量:5235 次
发布时间:2019-06-14

本文共 1018 字,大约阅读时间需要 3 分钟。

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

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

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

 

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

>>> msg="
">>> pat.findall(msg)[]

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

甚为不解,又try了一把:

>>> msg ='<\r>asdasf
'>>> pat.findall(msg)['<\r>', '
']>>> msg='<\n>adf
'>>> pat.findall(msg)['
']>>> msg='<\s>adaf
'>>> pat.findall(msg)['<\\s>', '
']>>> msg='<\n>asdfasf
'>>> pat.findall(msg)['
']

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

在找到了说明。

 

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

 

 

 

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

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

 

谷歌了一番,找到了答案,在。即加入DOTALL选项。如下:

>>> pat = re.compile('<.*?>',re.DOTALL)>>> pat.findall(msg)['<\nasdfs>', '
']

  

 

转载于:https://www.cnblogs.com/Tommy-Yu/p/4194991.html

你可能感兴趣的文章
20181212作业
查看>>
网络操作系统第一、二章习题
查看>>
如何做一名好的web安全工程师?
查看>>
shell 面试题
查看>>
企业选择 多云管理平台 六大注意事项
查看>>
命名规范
查看>>
sql server去掉某个字段前后空格问题
查看>>
安卓输入子系统之inotify与epoll机制【学习笔记】【原创】
查看>>
Handler实例
查看>>
谈谈常用清除浮动的方法
查看>>
6.25-Git 技巧
查看>>
Django模板
查看>>
Python--面向对象进阶
查看>>
ural 1207 Median on the Plane
查看>>
Codeforces Round #522 Div. 1 没打记
查看>>
UIBezierPath详解
查看>>
用GifCam在OSQA的回答中放录屏录像
查看>>
Asp.net Core 异步调用 Task await async 的梳理
查看>>
CodeForces 157B Trace
查看>>
PAT 1026 Table Tennis (30)
查看>>