zoukankan      html  css  js  c++  java
  • python 正则表达式应用——缩写词扩充

    看具体示例

    import re
    def expand_abbr(sen, abbr):
        lenabbr = len(abbr)
        ma = '' 
        for i in range(0, lenabbr):
            ma += abbr[i] + "[a-z]+" + ' '
        print 'ma:', ma
        ma = ma.strip(' ')
        p = re.search(ma, sen)
        if p:
            return p.group()
        else:
            return ''
    
    print expand_abbr("Welcome to Algriculture Bank China", 'ABC')

    分析

    缩写词  FEMA

    分解为  F*** E*** M*** A***

    规律     大写字母 + 小写(大于等于1个)+ 空格

    参考代码

     

    问题    

     以上分析对于示例前三个是可以的,但是后三个出现问题了,大写字母开头的扩充词里夹杂这小写字母

    解决

    缩写词  FDA

    分解为  F*** (**)? E*** (**)?  M*** (**)? A*** 

                  其中(**)?表示小写字母组合出现一次或不出现

    规律   大写字母 + 小写(大于等于1个)+ 空格 + [小写+空格](0次或1次)

    参考代码

    import re
    def expand_abbr(sen, abbr):
        lenabbr = len(abbr)
        ma = '' 
        for i in range(0, lenabbr-1):
            ma += abbr[i] + "[a-z]+" + ' ' + '([a-z]+ )?'
        ma += abbr[lenabbr-1] + "[a-z]+"
        print 'ma:', ma
        ma = ma.strip(' ')
        p = re.search(ma, sen)
        if p:
            return p.group()
        else:
            return ''
    
    print expand_abbr("Welcome to Algriculture Bank of China", 'ABC')

    语法

    ?   匹配前边一次或0次

    ()作为一个分组,后边可以加量词,表示匹配的次数

  • 相关阅读:
    java 事务
    JPA概述以及它和Hibernate之间的关系
    [转]JavaWeb之 Servlet执行过程 与 生命周期
    j2EE的web.xml详解
    安装PyTorch 0.4.0
    [转]springmvc常用注解标签详解
    hibernate的dialect大全
    Hibernate快速入门
    DBUtils使用详解
    用户密码初始化
  • 原文地址:https://www.cnblogs.com/kaituorensheng/p/3421906.html
Copyright © 2011-2022 走看看