regex - 如何在正则表达式匹配中包含撇号
问题描述
该函数需要创建首字母缩略词。示例输入-GNU 图像处理程序。output-GIMP Input-先进先出 output-FIFO Input-哈雷彗星输出-HSC,不过应该是HC 代码如下
def abbreviate(words):
acroynm=''
b=words.replace('_', '')
d=re.findall(r'\w+|^\s',b)
for char in d:
acroynm+=(char[0])
return acroynm.upper()
问题是正则表达式不包含撇号,并将撇号后面的其余单词作为一个单独的单词。
如何更改正则表达式代码以便包含撇号?
解决方案
那是你要的吗:
import re
arr = [
'GNU Image Manipulation Program',
'First In, First Out',
'ab\'c def',
]
def abbreviate(words):
L = re.findall(r'(?<!\S)([a-zA-Z])', words)
return "".join(L).upper()
for s in arr:
print abbreviate(s)
输出:
GIMP
FIFO
AD
正则表达式解释:
(?<!\S) # negative lookbehind, zero length assertion that checks there is no non-spaces before
# (it means there can be a space or beginning of string)
([a-zA-Z]) # group 1, a letter
推荐阅读
- reactjs - 按钮如何也可以像链接一样起作用
- c# - 如何反序列化xml文件的子节点
- java - Intellij json片段问题与文本块
- r - 如何在 R 上的 data.frame 中添加新的多行?
- android - 错误:格式指定类型“int”,但参数的类型为“size_t”(又名“无符号长”)[-Werror,-Wformat]
- arrays - 如何在不知道c中大小的情况下遍历数组
- python - 在 django 中导入静态文件时出现问题?
- python - 如何随后将函数参数传递给 lambda 函数
- python - ESL 学校的 Django 模型
- php - 使用 MySQL 在选择/查看时翻转表内容?