Python论坛  - 讨论区

标题:[python-chinese] 一个正则表达式的问题,请大家帮忙看看,谢谢了

2007年09月01日 星期六 16:06

fei.He hefei267在gmail.com
星期六 九月 1 16:06:53 HKT 2007

Åöµ½¸öÆæ¹ÖµÄÎÊÌ⣺

IDLE 1.2.1
>>> import re
>>> Regex = re.compile
(r'^[¼¸ÊýµÚÉϳÉ]?[Áã¡ðÒ»¶þÁ½ÈýËÄÎåÁùÆß°Ë¾Åʮإ°ÙǧÍòÒÚÒ¼·¡ÈþËÁÎé½Æâ°Æ¾Áʰ°ÛǪ¡Ã¡¤£®£¯µã]*[·ÖÖ®]?[Áã¡ðÒ»¶þÁ½ÈýËÄÎåÁùÆß°Ë¾Åʮإ°ÙǧÍòÒÚÒ¼·¡ÈþËÁÎé½Æâ°Æ¾Áʰ°ÛǪ]*$')
>>> b = Regex.match("˵µÄȷʵ")
>>> print b.group()
˵µÄȷʵ
>>> print b.start()
0
>>> print b.end()
8
>>> b = Regex.match("´ó¼ÒºÃ")
>>> type(b)

>>> b = Regex.match("´ó¼ÒºÃ°¡")
>>> type(b)


ÕâÊÇʲôÇé¿ö£¿ÔõôÕâ¸öÕýÔò±í´ïʽ¾¹È»ÄÜ°Ñ "˵µÄȷʵ"¸øÆ¥ÅäÁ˰¡£¿
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20070901/edbbe591/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年09月01日 星期六 16:12

XiaQ xiaqqaix在gmail.com
星期六 九月 1 16:12:56 HKT 2007

在07-9-1,fei. He <hefei267在gmail.com> 写道:
>
> 碰到个奇怪的问题:
>
> IDLE 1.2.1
> >>> import re
> >>> Regex = re.compile
> (r'^[几数第上成]?[零○一二两三四五六七八九十廿百千万亿壹贰叁肆伍陆柒捌玖拾佰仟∶·./点]*[分之]?[零○一二两三四五六七八九十廿百千万亿壹贰叁肆伍陆柒捌玖拾佰仟]*$')
>

请把半角的 . 改成 \.。另外罚楼主抄 lib_ref.re,抄 HTML 版的还是 pdf 版的你看着办吧。^_^
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20070901/cf6f83e5/attachment.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年09月01日 星期六 16:30

XiaQ xiaqqaix在gmail.com
星期六 九月 1 16:30:25 HKT 2007

在07-9-1,XiaQ <xiaqqaix在gmail.com> 写道:
>
> 在07-9-1,fei. He <hefei267在gmail.com> 写道:
> >
> > 碰到个奇怪的问题:
> >
> > IDLE 1.2.1
> > >>> import re
> > >>> Regex = re.compile
> > (r'^[几数第上成]?[零○一二两三四五六七八九十廿百千万亿壹贰叁肆伍陆柒捌玖拾佰仟∶·./点]*[分之]?[零○一二两三四五六七八九十廿百千万亿壹贰叁肆伍陆柒捌玖拾佰仟]*$')
> >
>
no no no,看来不止是点的问题。不过问题还是出在第二部分(零○一二两三四五六七八九十廿百千万亿壹贰叁肆伍陆柒捌玖拾佰仟∶·./点)上。
发现一个问题,应该可以算是一个 clue:
>> '零○一二两三四五六七八九十廿百千万亿壹贰叁肆伍陆柒捌玖拾佰仟∶·./点'
'\xc1\xe3\xa1\xf0\xd2\xbb\xb6\xfe\xc1\xbd\xc8\xfd\xcb\xc4\xce\xe5\xc1\xf9\xc6\xdf\xb0\xcb\xbe\xc5\xca\xae\xd8\xa5\xb0\xd9\xc7\xa7\xcd\xf2\xd2\xda\xd2\xbc\xb7\xa1\xc8\xfe\xcb\xc1\xce\xe9\xc2\xbd\xc6\xe2\xb0\xc6\xbe\xc1\xca\xb0\xb0\xdb\xc7\xaa\xa1\xc3\xa1\xa4\xa3\xae\xa3\xaf\xb5\xe3'

>> '说的确实'
'\xcb\xb5\xb5\xc4\xc8\xb7\xca\xb5'

如果每个字都看成这样的两个"字",确实匹配!
看来又是编码问题~~ 有谁能把这些编码问题总结一下吗,列表里上次有人总结结果有很多纰漏……
据说 python 3000 合并 str 和 unicode 了,幸福ing……
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20070901/5beec3f7/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年09月01日 星期六 16:44

fei.He hefei267在gmail.com
星期六 九月 1 16:44:43 HKT 2007

ÄǸÃÔõô°ì£¿Á½¸ö×Ö·û´®¶¼¸ÄΪunicode£¿

ÔÚ07-9-1£¬XiaQ <xiaqqaix在gmail.com> дµÀ£º
>
> ÔÚ07-9-1£¬XiaQ <xiaqqaix在gmail.com> дµÀ£º
> >
> > ÔÚ07-9-1£¬fei. He <hefei267在gmail.com> дµÀ£º
> > >
> > > Åöµ½¸öÆæ¹ÖµÄÎÊÌ⣺
> > >
> > > IDLE 1.2.1
> > > >>> import re
> > > >>> Regex = re.compile
> > > (r'^[¼¸ÊýµÚÉϳÉ]?[Áã¡ðÒ»¶þÁ½ÈýËÄÎåÁùÆß°Ë¾Åʮإ°ÙǧÍòÒÚÒ¼·¡ÈþËÁÎé½Æâ°Æ¾Áʰ°ÛǪ¡Ã¡¤£®£¯µã]*[·ÖÖ®]?[Áã¡ðÒ»¶þÁ½ÈýËÄÎåÁùÆß°Ë¾Åʮإ°ÙǧÍòÒÚÒ¼·¡ÈþËÁÎé½Æâ°Æ¾Áʰ°ÛǪ]*$')
> > >
> >
> no no no£¬¿´À´²»Ö¹ÊǵãµÄÎÊÌâ¡£²»¹ýÎÊÌ⻹ÊdzöÔÚµÚ¶þ²¿·Ö(Áã¡ðÒ»¶þÁ½ÈýËÄÎåÁùÆß°Ë¾Åʮإ°ÙǧÍòÒÚÒ¼·¡ÈþËÁÎé½Æâ°Æ¾Áʰ°ÛǪ¡Ã¡¤£®£¯µã)ÉÏ¡£
> ·¢ÏÖÒ»¸öÎÊÌ⣬Ӧ¸Ã¿ÉÒÔËãÊÇÒ»¸ö clue£º
> >> 'Áã¡ðÒ»¶þÁ½ÈýËÄÎåÁùÆß°Ë¾Åʮإ°ÙǧÍòÒÚÒ¼·¡ÈþËÁÎé½Æâ°Æ¾Áʰ°ÛǪ¡Ã¡¤£®£¯µã'
> '\xc1\xe3\xa1\xf0\xd2\xbb\xb6\xfe\xc1\xbd\xc8\xfd\xcb\xc4\xce\xe5\xc1\xf9\xc6\xdf\xb0\xcb\xbe\xc5\xca\xae\xd8\xa5\xb0\xd9\xc7\xa7\xcd\xf2\xd2\xda\xd2\xbc\xb7\xa1\xc8\xfe\xcb\xc1\xce\xe9\xc2\xbd\xc6\xe2\xb0\xc6\xbe\xc1\xca\xb0\xb0\xdb\xc7\xaa\xa1\xc3\xa1\xa4\xa3\xae\xa3\xaf\xb5\xe3'
>
>
> >> '˵µÄȷʵ'
> '\xcb\xb5\xb5\xc4\xc8\xb7\xca\xb5'
>
> Èç¹ûÿ¸ö×Ö¶¼¿´³ÉÕâÑùµÄÁ½¸ö"×Ö"£¬È·ÊµÆ¥Å䣡
> ¿´À´ÓÖÊDZàÂëÎÊÌâ~~ ÓÐË­ÄܰÑÕâЩ±àÂëÎÊÌâ×ܽáÒ»ÏÂÂð£¬ÁбíÀïÉÏ´ÎÓÐÈË×ܽá½á¹ûÓкܶàç¢Â©¡­¡­
> ¾Ý˵ python 3000 ºÏ²¢ str ºÍ unicode ÁË£¬ÐÒ¸£ing¡­¡­
>
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20070901/3ec74e04/attachment.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年09月01日 星期六 16:57

XiaQ xiaqqaix在gmail.com
星期六 九月 1 16:57:52 HKT 2007

在07-9-1,fei. He <hefei267在gmail.com> 写道:
>
> 那该怎么办?两个字符串都改为unicode?
>

都改成 unicode 没用的,我试验了。不过想到了一个(有点 dirty 的)办法:既然中文被拆分成了两个字符,那就用 (|) 代替 []中使用中文即可。像
[几数第上成]
变为
(几|数|第|上|成)
可以写一个脚本完成机械的转换,不过还是先弄清编码的问题吧……
我估计问题的症结在这里:
>>> s = '说的确实'
>>> s
'\xcb\xb5\xb5\xc4\xc8\xb7\xca\xb5'
>> s[0]
'\xcb'

>>> s = u'说的确实'
>>> s
u'\xcb\xb5\xb5\xc4\xc8\xb7\xca\xb5'
>>> s[0]
u'\xcb'

如果字符串的行为是 s[1]  == '\xcb\xb5' 这个问题自然迎刃而解。
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20070901/156012f9/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年09月01日 星期六 17:15

黄毅 yi.codeplayer在gmail.com
星期六 九月 1 17:15:18 HKT 2007

>>> import re
>>> Regex = re.compile(ur'^[几数第上成]?[零○一二两三四五六七八九十廿百千万亿壹
贰叁肆伍陆柒捌玖拾佰仟∶·./点]*[分之]?[零○一二两三四五六七八九十廿百千万亿壹
贰叁肆伍陆柒捌玖拾佰仟]*$', re.U)
>>> print Regex.match("大家好")
None
>>> print Regex.match(u"大家好")
None
>>> print Regex.match(u"第一").group()
第一

On 9/1/07, fei. He <hefei267 at gmail.com> wrote:
>
> 碰到个奇怪的问题:
>
> IDLE 1.2.1
> >>> import re
> >>> Regex = re.compile
> (r'^[几数第上成]?[零○一二两三四五六七八九十廿百千万亿壹贰叁肆伍陆柒捌玖拾佰仟∶·./点]*[分之]?[零○一二两三四五六七八九十廿百千万亿壹贰叁肆伍陆柒捌玖拾佰仟]*$')
> >>> b = Regex.match ("说的确实")
> >>> print b.group()
> 说的确实
> >>> print b.start()
> 0
> >>> print b.end()
> 8
> >>> b = Regex.match("大家好")
> >>> type(b)
> 
> >>> b = Regex.match("大家好啊")
> >>> type(b)
> 
>
> 这是什么情况?怎么这个正则表达式竟然能把 "说的确实"给匹配了啊?
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>



-- 
http://codeplayer.blogspot.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20070901/7a01f265/attachment.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年09月01日 星期六 17:23

XiaQ xiaqqaix在gmail.com
星期六 九月 1 17:23:05 HKT 2007

在07-9-1,黄毅 <yi.codeplayer在gmail.com> 写道:
>
> >>> import re
> >>> Regex = re.compile(ur'^[几数第上成]?[零○一二两三四五六七八九十廿百千万亿壹
> 贰叁肆伍陆柒捌玖拾佰仟∶·./点]*[分之]?[零○一二两三四五六七八九十廿百千万亿壹
> 贰叁肆伍陆柒捌玖拾佰仟]*$', re.U)
> >>> print Regex.match("大家好")
> None
> >>> print Regex.match(u"大家好")
> None
> >>> print Regex.match(u"第一").group()
> 第一


加了 re.U 这个 flag 也无济于事,我试验了的:
>>> Regex = re.compile(ur'^[几数第上成]?[零○一二两三四五六七八九十廿百千万亿壹贰叁肆伍陆柒捌玖拾佰仟∶·\./点]*[分之]?[零○一二两三四五六七八九十廿百千万亿壹贰叁肆伍陆柒捌玖拾佰仟]*$',
re.U)
>>> print Regex.match("说的确实")
<_sre.SRE_Match object at 0x011D5100>

加 re.L 也没用。
另外提醒楼上没有把.纠正为\.。
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20070901/2a23f779/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年09月02日 星期日 00:43

Chunhui Li wiseneuron在gmail.com
星期日 九月 2 00:43:04 HKT 2007

very well

XiaQ wrote:
> 在07-9-1,*黄毅* <yi.codeplayer在gmail.com 
> yi.codeplayer在gmail.com>> 写道:
>
>     >>> import re
>     >>> Regex = re.compile(ur'^[几数第上成]?[零○一二两三四五六七八九十
>     廿百千万亿壹
>     贰叁肆伍陆柒捌玖拾佰仟∶·./点]*[分之]?[零○一二两三四五六七八九十
>     廿百千万亿壹
>     贰叁肆伍陆柒捌玖拾佰仟]*$', re.U)
>     >>> print Regex.match("大家好")
>     None
>     >>> print Regex.match(u"大家好")
>     None
>     >>> print Regex.match(u"第一").group()
>     第一
>
>
> 加了 re.U 这个 flag 也无济于事,我试验了的:
> >>> Regex = re.compile(ur'^[几数第上成]?[零○一二两三四五六七八九十廿百 
> 千万亿壹贰叁肆伍陆柒捌玖拾佰仟∶·\./点]*[分之]?[零○一二两三四五六七八 
> 九十廿百千万亿壹贰叁肆伍陆柒捌玖拾佰仟]*$', re.U)
> >>> print Regex.match("说的确实")
> <_sre.SRE_Match object at 0x011D5100>
>
> 加 re.L 也没用。
> 另外提醒楼上没有把.纠正为\.。
> ------------------------------------------------------------------------
>
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese

-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20070902/9c2c17ec/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号