首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python三字母缩略词

Python三字母缩略词
EN

Stack Overflow用户
提问于 2014-02-09 01:30:55
回答 3查看 319关注 0票数 0

我试图检查某个字符串是否包含使用regex的首字母缩略词。

我目前的判断力:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
re.search(r'\b[A-Z]{3}', string)

目前,它输出的是USANYCsNSFW,但在NSFW上不应该说true,因为它是四个字母的缩写,而不是三个。

如何调整正则表达式,使其不接受NSFW,但仍然接受NYCs

编辑:它也应该接受NYC,

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-09 01:47:43

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> import re
>>> rexp = r'(?:\b)([A-Z]{3})(?:$|[^A-Z])'
>>> re.search(rexp, 'USA').groups()
('USA',)
>>> re.search(rexp, 'NSFW') is None
True
>>> re.search(rexp, 'aUSA') is None
True
>>> re.search(rexp, 'NSF,').groups()
('NSF',)
票数 0
EN

Stack Overflow用户

发布于 2014-02-09 01:58:55

负前瞻性断言:(?!pattern)

re.search(r'\b[A-Z]{3}(?![A-Z])',string)

这就要求三重大写模式永远不会被另一个大写字母所遵循,而它并不意味着其他限制,就像模式必然会被某种东西所遵循一样。想一想“不接P”与“不接P”

尝试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
filter(re.compile(r'\b[A-Z]{3}(?![A-Z])').search, ['.ANS', 'ANSs', 'AANS', 'ANS.'])
票数 1
EN

Stack Overflow用户

发布于 2014-02-09 01:36:29

可以使用来表示字符是可选的,{0,1}将是等效的。

你可以把你想要匹配的任何字符放在方括号中,,它会匹配任意一个0或1次,所以纽约。或者赢或者是福,都会匹配的。

$添加到末尾,以便在允许匹配后不指定更多字符

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
re.search(r'\b[A-Z]{3}[s,.]?$', string)
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21657407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文