Python三字母缩略语

2024-06-02 12:30:42 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我当前的正则表达式:

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

当前它输出true to USANYCs、和{},但它不应该在{}上说true,因为它是一个四个字母的首字母缩略词,而不是三个字母。在

如何重新调整regex使其不接受NSFW,但仍然接受NYCs

编辑:它还应该接受NYC,


Tags: to字符串retrue编辑searchstring字母
3条回答
>>> 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',)

否定的前瞻断言:(?!pattern)

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

这就要求三重大写的模式永远不能跟在另一个大写字母后面,而这并不意味着其他限制,比如模式后面一定要有其他东西。 想想“不跟P”和“后面不是P”

尝试:

filter(re.compile(r'\b[A-Z]{3}(?![A-Z])').search, ['.ANS', 'ANSs', 'AANS', 'ANS.'])

你可以使用表示字符是可选的,{0,1}是等价的。在

你可以把你想匹配的任何字符放在方括号内[]它将匹配0或1倍于NYC的任何一个。或赢或输,将匹配。在

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

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

相关问题 更多 >