匹配汉字的正则表达式式在一行文本中同时匹配两个汉字

python&正则表达式&多行匹配&获取指定的字符
python多行匹配
r = re.compile("需要的正则表达式", re.M)
匹配到需要的字符,可以获取红括号内的数字
r = re.compile("r([0-9]{5,})")
举个例子: 需要获取2连个数字
data = """
&hello word !!!!
&r24729 line2
&revision:24181
re.compile("^r([0-9]{5,})", re.M)
r.findall(data)
& &print nums
---------------------
output:["24062",
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。博客访问: 1821616
博文数量: 167
博客积分: 3184
博客等级: 中校
技术积分: 3947
注册时间:
分类: Python/Ruby 12:12:27
&由于 需求原因,需要匹配 提取中文,大量google下,并没有我需要的。花了一个小时大概测试,此utf8中文通过,特留文。
&& 参考: http://hi.baidu.com/nivrrex/blog/item/e6ccaf511d071.html
&&&&&&&&& http://topic.csdn.net/u//b011aa83-f9b7-43b3-bbff-bfe4f653df03.html
&&& 首先,确保所有编码都为 unicode
& & & && 比如 str.decode('utf8') #从utf8文本中
&&&&&&&&&&&&& u"啊l"& #在控制台输出中 &&&
&&&&&&&& (罗嗦下)本想使用参考一定编码 Hex 但郁闷的是 这每个字好像占2个位置,使用正则匹配无果。
&&& 其次,确定中文范围 :&[\u4e00-\u9fa5]
&&&&&&&&& (这里注意下 python 的re写的时候) 要&&u"[\u4e00-\u9fa5]" #确定正则表达式也是 unicode 的
&&& demo :
>>>&print&re.match(ur"[\u4e00-\u9fa5]+","啊")
>>>&print&re.match(ur"[\u4e00-\u9fa5]+",u"啊")
<_sre.SRE_Match&object&at&0x2a>
>>>&print&re.match(ur"[\u4e00-\u9fa5]+",u"t")
>>>&print&tt
现在才明白
'\xe7\x8e\xb0\xe5\x9c\xa8\xe6\x89\x8d\xe6\x98\x8e\xe7\x99\xbd'
>>>&print&re.match(r"[\u4e00-\u9fa5]",tt.decode('utf8'))
>>>&print&re.match(ur"[\u4e00-\u9fa5]",tt.decode('utf8'))
<_sre.SRE_Match&object&at&0x2a955d9c60>
>>>&print&re.match(ur".*["u4e00-"u9fa5]+",u"hi,匹配到了")
<_sre.SRE_Match&object&at&0x2a955d9c60>
>>>&print&re.match(ur".*["u4e00-"u9fa5]+",u"hi,no&no")
其他 扩充 范围 (转)
这里是几个主要非英文语系字符范围(google上找到的):
2E80~33FFh:中日韩符号区。收容康熙字典部首、中日韩辅助部首、注音符号、日本假名、韩文音符,中日韩的符号、标点、带圈或带括符文数字、月份,以及日本的假名组合、单位、年号、月份、日期、时间等。
3400~4DFFh:中日韩认同表意文字扩充A区,总计收容6,582个中日韩汉字。
4E00~9FFFh:中日韩认同表意文字区,总计收容20,902个中日韩汉字。
A000~A4FFh:彝族文字区,收容中国南方彝族文字和字根。
AC00~D7FFh:韩文拼音组合字区,收容以韩文音符拼成的文字。
F900~FAFFh:中日韩兼容表意文字区,总计收容302个中日韩汉字。
FB00~FFFDh:文字表现形式区,收容组合拉丁文字、希伯来文、阿拉伯文、中日韩直式标点、小符号、半角符号、全角符号等。
比如需要匹配所有中日韩非符号字符,那么正则表达式应该是^[\u3400-\u9FFF]+$
理论上没错,&可是我到msn.co.ko随便复制了个韩文下来,&发现根本不对,&诡异
再到msn.co.jp复制了个’お’,&也不得行..
然后把范围扩大到^[\u2E80-\u9FFF]+$,&这样倒是都通过了,&这个应该就是匹配中日韩文字的正则表达式了,&包括我們臺灣省還在盲目使用的繁體中文
而关于中文的正则表达式,&应该是^[\u4E00-\u9FFF]+$,&和论坛里常被人提起的^[\u4E00-\u9FA5]+$很接近
需要注意的是论坛里说的^[\u4E00-\u9FA5]+$这是专门用于匹配简体中文的正则表达式,&实际上繁体字也在里面,&我用测试器测试了下’中華人民共和國’,&也通过了,&当然,&^[\u4E00-\u9FFF]+$也是一样的结果。
阅读(16599) | 评论(1) | 转发(4) |
给主人留下些什么吧!~~
非常感谢。
请登录后评论。正则表达式能否匹配一行中多个固定区间_百度知道
正则表达式能否匹配一行中多个固定区间
想通过正则匹配一行的第 5-8
22-33 等多个区间的字符串。我可以通过下面的正则匹配,但是效率上不是很好,寻求更好的方案((?&=^.{4}).{4})|((?&=^.{9}).{6})|((?&=^.{21}).{12})
我有更好的答案
^.{4}(.{4}).(.{6}).{6}(.{12})或者^(?:.{4})(?&f&.{4})(?:.{1})(?&s&.{6})(?:.{6})(?&t&.{12})直接匹配然后获取分组应该是效率最高的吧。因为字符串都是不定长的,所以应该没有更好的方案了。
我的想法是在搜索文本的时候直接匹配,分组后获取还是实现不了。好像只能用环视来解决了。
采纳率:85%
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。正则表达式如何只匹配到一行的内容_百度知道
正则表达式如何只匹配到一行的内容
&a href=&/browse/XCLL-299&&“test”&/a& 在文本中同样的行很多,如何只匹配到这一行
我有更好的答案
^&a href=&/browse/XCLL-299&&“test”&/a&$^代表开头 $代表结尾; 以上是完全匹配以下可能是你想要的, 取决于你的需求:^&a[^a]*&“test”&/a&$
找“test”^&a href=&/browse/XCLL-299&&[^&]*&/a&$
找 url 是&/browse/XCLL-299&的
采纳率:51%
为您推荐:
其他类似问题
您可能关注的内容
正则表达式的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。没有更多推荐了,
不良信息举报
举报内容:
正则表达式中多行匹配问题
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!}

我要回帖

更多关于 正则表达式 匹配一行 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信