python正则匹配中文
Ⅰ 如何用正则表达式提取字符串中的中英文
python re正则匹配中文,其实非常简单,把中文的unicode字符串转换成utf-8格式就可以了,然后可以在re中随意调用
unicode中中文的编码为/u4e00-/u9fa5,因此正则表达式u”[\u4e00-\u9fa5]+”可以表示一个或者多个中文字符
>>> import re
>>> s='中文:123456aa哈哈哈bbcc'.decode('utf8')
>>> s
u'\u4e2d\u6587\uff1a123456aa\u54c8\u54c8\u54c8bbcc'
>>> print s
中文:123456aa哈哈哈bbcc
>>> re.match(u"[\u4e00-\u9fa5]+",s)
<_sre.SRE_Match object at 0xb77742c0>
>>> pat='中文'.decode("utf8")
>>> re.search(pat,s)
<_sre.SRE_Match object at 0x16a16df0>
>>> newpat='这里是中文内容'.decode("utf8")
>>> news=re.sub(pat,newpat,s)
>>> print news
这里是中文内容:123456aa哈哈哈bbcc
Ⅱ python正则表达式中\w居然能匹配汉字,请问是怎么一回事
\w匹配的是能组成单词的字符,在python3 中re默认支持的是unicode字符集,当然也支持汉字
如果要让\w仅支持英文,加个re.A标志
print(re.findall(r"\w",s,re.A))
这样就不会匹配汉字了
Ⅲ Python用正则表达式匹配含有中文的字符串,匹配不到
代码如下:
#coding=utf-8
importre
s=u'<li><aclass="nav-first"href="/">首页</a></li>'
r=re.compile(u'<li><asclass="[^"]*"shref="[^"]">(.*?)(?=</a></li>)')
ss=r.findall(s)
forstrinss:
printstr
运行结果:
Ⅳ python怎样读取文本文件里的中文
#在Windows 环境下
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import re
fin = open('in.txt', 'r') #以读的方式打开输入文件
for eachLine in fin: #按行读入文件内容
line = eachLine.strip().decode('gbk', 'utf-8') #处理前进行相关的处理,包括转换成Unicode等
print line #打印原始字符
p2 = re.compile(ur'[^\u4e00-\u9fa5]') #中文的编码范围是:\u4e00到\u9fa5
zh = "".join(p2.split(line)).strip()
#zh = ",".join(zh.split())
print zh ##打印中文字符
Ⅳ 强烈推荐!Python 这个宝藏库 re 正则匹配
Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作。
在文本解析、复杂字符串分析和信息提取时是一个非常有用的工具 ,下面总结了 re 模块的常用方法。
d 匹配所有的十进制数字 0-9
D 匹配所有的非数字,包含下划线
s 匹配所有空白字符(空格、TAB等)
S 匹配所有非空白字符,包含下划线
w 匹配所有字母、汉字、数字 a-z A-Z 0-9
W 匹配所有非字母、汉字、数字,包含下划线
备注迹凳:符号.* 贪婪,符号.*? 非贪婪
[abc]:能匹配其中的单个字符
[a-z0-9]:能匹配指定范围的字符,可取反(在最前面加入^)
[2-9] [1-3]:能够做组合匹配
4.{ }:用于标记前面的字符出现的频率,有如下情况:
{n,m}:代表前面字符最少出现n次,最多出现m次
{n,}:代表前面字符最少出现n次,最多不受限制
{,m}:代表前面字符最多出现n次,最少不受限制
{n}:前面的字符必须出现n次
字符串中有反斜杠的,需要对反斜杠做转义
():分组字符,可以为匹配到的内容分组,快速获取到分组中的数据 在正则里面 "()" 代表的是分组的意思,一个括号代表一个分组,你只能匹配到 "()" 中的内容。
group:用于查看指定分组匹配到的内容
groups:返回一个元组,组内为所有匹配到的内容
groupdict:返回一个字典,包含分组的键值对,需要为分组命名
作用:可以将字符串匹配正则表达式的部分割开并返回一个列表
flags定义包括:
re.I:忽略大小写
re.L:表示特殊字符集 w, W, b, B, s, S 依赖于当前环境
re.M:多行模式
re.S:’.’并且包括换行符在内的任意字符(注意:’.’不包括换行符)
re.U:表示特殊字符集 w, W, b, B, d, D, s, S 依赖于 Unicode 字符属性数据库
在 Python 中使用正耐孙则表达式之前,先使用以下命令导入 re 模块
例如:
‘(d)(a)1’ 表示:匹配第一是数字,第二是字符a,第三 1 必须匹配第一个一样的数字重复一次姿亩旅,也就是被引用一次。
如 “9a9” 被匹配,但 “9a8” 不会被匹配,因为第三位的 1 必须是 9 才可以。
‘(d)(a)2’ 表示:匹配第一个是一个数字,第二个是a,第三个 2 必须是第二组()中匹配一样的。
如 “8aa” 被匹配,但 “8ab”,“7a7” 不会被匹配,第三位必须是第二组字符的复制版,也是就引用第二组正则的匹配内容。