免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3255 | 回复: 19
打印 上一主题 下一主题

问一个正则问题,高手快来帮忙啊~,在线等待中.... [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-26 15:54 |只看该作者 |倒序浏览
>>> import re
>>> s='/home/shif/afa/ag/'
>>> ss=re.match('/$',s)
>>> print ss
None
>>>


为什么不能匹配最后一个/啊?

论坛徽章:
0
2 [报告]
发表于 2009-02-26 16:16 |只看该作者
match方法从开头进行匹配,看官方解释。
match(pattern, string, flags=0)
    Try to apply the pattern at the start of the string, returning
    a match object, or None if no match was found.

>>> re.match("c","abc")
>>> re.match("a","abc")
<_sre.SRE_Match object at 0x00AFDD08>

你可以尝试search方法,应该是你想要的

[ 本帖最后由 xiaoyu9805119 于 2009-2-26 16:20 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2009-02-26 16:26 |只看该作者
原帖由 xiaoyu9805119 于 2009-2-26 16:16 发表
match方法从开头进行匹配,看官方解释。
match(pattern, string, flags=0)
    Try to apply the pattern at the start of the string, returning
    a match object, or None if no match was found.

> ...



多谢多谢哈~

论坛徽章:
0
4 [报告]
发表于 2009-02-26 16:36 |只看该作者
>>> s1 = 'klajgklasklajgklasj\\'
>>> ss = re.search('\\$',s1)
>>> print ss
None
>>>

很奇怪啊~为什么\就匹配不了?

论坛徽章:
0
5 [报告]
发表于 2009-02-26 16:40 |只看该作者
re.search('\\\\$',s1)
要用四个斜杠

论坛徽章:
0
6 [报告]
发表于 2009-02-26 16:42 |只看该作者
原帖由 Heaice 于 2009-2-26 16:36 发表
>>> s1 = 'klajgklasklajgklasj\\'
>>> ss = re.search('\\$',s1)
>>> print ss
None
>>>

很奇怪啊~为什么\就匹配不了?



这个变态得python啊~我该怎么说你哦~

>>> s1 = 'klajgklasklajgklasj\\'
>>> ss = re.search('\\\\$',s1)
>>> print ss
<_sre.SRE_Match object at 0x01514640>
>>>

论坛徽章:
0
7 [报告]
发表于 2009-02-26 16:45 |只看该作者
原帖由 Heaice 于 2009-2-26 16:42 发表



这个变态得python啊~我该怎么说你哦~

>>> s1 = 'klajgklasklajgklasj\\'
>>> ss = re.search('\\\\$',s1)
>>> print ss

>>>

不是py变态~~~
\\只是表示一个斜杠,你要表示两个只能四个\

论坛徽章:
0
8 [报告]
发表于 2009-02-26 16:57 |只看该作者
原帖由 xiaoyu9805119 于 2009-2-26 16:45 发表

不是py变态~~~
\\只是表示一个斜杠,你要表示两个只能四个\



但是字符串中实际上是只有一个\,而匹配的也就是这个

>>> print s1
klajgklasklajgklasj\
>>>

[ 本帖最后由 Heaice 于 2009-2-26 16:59 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2009-02-26 17:01 |只看该作者
>>> s1 = 'klajgklasklajgklasj\\'
>>> s1
'klajgklasklajgklasj\\'
因为你这里是单引号,里面的\\就是两个\,不是一个哦。

怕麻烦的话用
>>> re.search(r'\\$',s1)
r加在正则前面就ok了

论坛徽章:
0
10 [报告]
发表于 2009-02-26 17:19 |只看该作者
原帖由 xiaoyu9805119 于 2009-2-26 17:01 发表
>>> s1 = 'klajgklasklajgklasj\\'
>>> s1
'klajgklasklajgklasj\\'
因为你这里是单引号,里面的\\就是两个\,不是一个哦。

怕麻烦的话用
>>> re.search(r'\\$',s1)
r加在正则前面就ok了



我尝试了下把字符串(aslkgjaslkgjslakjglsa\)从文件中读取出来,那么文件中的字符串\就只有一个了.

但是在匹配的时候还是需要4个\,因为在读取字符串的时候,python就加了一个进去

>>> f=open('c:\\123.txt','r')
>>> print f
<open file 'c:\123.txt', mode 'r' at 0x015DD6B0>
>>> s=f.readline()
>>> s
'aslkgjaslkgjslakjglsa\\'
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP