免费注册 查看新帖 |

Chinaunix

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

还是关于正则表达 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-04-10 20:27 |只看该作者 |倒序浏览
import re
text = "ASDF QBC123,A.S123D A.S123D A,BSD"
text_tmp = re.split(',',text)
print text_tmp
l = re.search(r'^A.', text_tmp)
print l.group()

这是我的实验程序,我希望将 字符串中的A.后面的S123D提取出来,原来打算直接用re.search(r'^A.', text)后来发现只能认到了ASDF的那个A
然后想用split空格,将text分割成 ASDF及QBC123, A.S123D 还有A.S123D 最后A,BSD,然后用'^A.'来匹配
结果报错“TypeError: expected string or buffer”

论坛徽章:
0
2 [报告]
发表于 2014-04-10 23:07 |只看该作者
search 只會找到第一個就停下來了……

要把所有符合條件的找出來要用 findall 。

你試一下吧!不行再討論!

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-06-12 06:20:00
3 [报告]
发表于 2014-04-10 23:25 |只看该作者
回复 1# jasonzou
  1. patten=re.compile(r'A\.S.*?D')
  2. index=0
  3. while True:
  4.         match=patten.search(text,index)
  5.         if match==None:
  6.                 break
  7.         result=match.group()
  8.         print(result)
  9.         index=match.end()
复制代码

论坛徽章:
3
天蝎座
日期:2013-12-10 19:37:11酉鸡
日期:2014-08-04 20:05:38双鱼座
日期:2014-08-09 21:53:54
4 [报告]
发表于 2014-04-11 09:15 |只看该作者
这个最好还是用findall吧, 另外"^"锚位是指匹配字符串的开头,在这儿应该没必要使用"^".
  1. import re

  2. text = "ASDF QBC123,A.S123D A.S123D A,BSD"
  3. pattern = re.compile(r'(?<=A\.)([A-Z0-9]+)')
  4. matches = pattern.findall(text)
  5. print matches
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP