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次

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

 






本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/3421906.html,如需转载请自行联系原作者

相关文章
|
2天前
|
Python
Python 内置正则表达式库re的使用
正则表达式是记录文本规则的代码,用于查找和处理符合特定规则的字符串。在Python中,常通过原生字符串`r'string'`表示。使用`re.compile()`创建正则对象,便于多次使用。匹配字符串有`match()`(从开头匹配)、`search()`(搜索首个匹配)和`findall()`(找所有匹配)。替换字符串用`sub()`,分割字符串则用`split()`。
15 3
|
2天前
|
Java 测试技术
Java一分钟之-正则表达式在Java中的应用
【5月更文挑战第14天】正则表达式是Java中用于文本处理的强大力量,通过`java.util.regex`包支持。常见问题包括元字符的理解、边界匹配和贪婪/懒惰量词的使用。错误通常涉及未转义特殊字符、不完整模式或过度匹配。要避免这些问题,需学习实践、使用在线工具和测试调试。示例代码展示了如何验证邮箱地址。掌握正则表达式需要不断练习和调试。
17 2
|
1天前
|
监控 调度 开发者
Python 中的异步编程:理解 asyncio 库的基本原理与应用
本文将深入探讨 Python 中的异步编程技术,重点介绍 asyncio 库的基本原理与应用。通过解释事件循环、协程和 Future 对象的概念,读者将能够理解异步编程的工作原理,并学会如何利用 asyncio 库提高程序的性能和效率。本文还将通过实际示例演示如何使用 asyncio 库来处理 I/O 密集型任务和 CPU 密集型任务,以及如何避免常见的陷阱和错误。
|
1天前
|
调度 UED Python
Python 中的异步编程:理解 asyncio 库的基本原理与应用
本文探讨了 Python 中的异步编程,重点介绍了 asyncio 库的基本原理与应用。通过分析事件循环、协程以及异步/await 关键字的作用机制,读者将能够深入理解异步编程的工作方式,并学会如何利用 asyncio 库构建高效的异步应用程序。同时,本文还介绍了一些实际案例,帮助读者更好地掌握 asyncio 库的实际应用。
|
2天前
|
API 调度 开发者
探索Python中的异步编程:从基础到高级应用
【5月更文挑战第15天】 在现代软件开发中,异步编程已成为提升应用程序性能和用户体验的关键。本文将深入探讨Python中的异步编程概念,包括其基本工作原理、关键技术以及高级应用场景。我们将通过实例代码演示如何有效利用Python的异步特性,从而帮助读者构建更加高效和响应迅速的软件解决方案。
|
2天前
|
Python
python正则表达式小结
1. **其他函数:**  `re`模块还提供了其他一些函数,例如 `re.search()`查找字符串中第一个匹配的部分,`re.findall()`查找所有匹配的部分,`re.sub()`替换匹配的部分。
5 0
|
2天前
|
分布式计算 调度 异构计算
Python 数学应用(四)(4)
Python 数学应用(四)
13 4
|
2天前
|
消息中间件 Kafka Python
Python 数学应用(四)(3)
Python 数学应用(四)
24 5
|
2天前
|
存储 传感器 数据可视化
Python 数学应用(四)(2)
Python 数学应用(四)
5 0
Python 数学应用(四)(2)
|
2天前
|
存储 消息中间件 Kafka
Python 数学应用(四)(1)
Python 数学应用(四)
11 2