Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python三字母首字母缩略词_Python_Regex - Fatal编程技术网

Python三字母首字母缩略词

Python三字母首字母缩略词,python,regex,Python,Regex,我试图使用regex检查某个字符串是否包含首字母缩略词 我现在的正则表达式: re.search(r'\b[A-Z]{3}', string) 目前,它在USA、NYCs和NSFW上输出true,但在NSFW上不应该说true,因为它是四个字母的首字母缩写,而不是三个字母的首字母缩写 如何重新调整正则表达式使其不接受NSFW,但仍然接受NYCs 编辑:它还应该接受纽约市,您可以使用?来表示字符是可选的,{0,1}将是等效的 您可以将您想要匹配的任何字符放在方括号内[]它将匹配这些字符中的任何一

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

我现在的正则表达式:

re.search(r'\b[A-Z]{3}', string)
目前,它在
USA
NYCs
NSFW
上输出true,但在
NSFW
上不应该说true,因为它是四个字母的首字母缩写,而不是三个字母的首字母缩写

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


编辑:它还应该接受纽约市,

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

您可以将您想要匹配的任何字符放在方括号内[]它将匹配这些字符中的任何一个,因此NYC。或赢或富,都会匹配

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

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

消极的前瞻断言:
(?!模式)

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

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

尝试:


@第四,这将排除像
NYCs
这样的东西,因为's'是一个字符,这个
\b[a-Z]{3}[a-Z]+
?@第四,这不需要有一个来自a-Z的字母,这也会取消末尾有标点符号的东西的资格,比如
NYC,
请在问题本身添加所有这些规则。否则人们就得猜答案,编辑一下就行了。很抱歉。对于
NSFW
您的正则表达式将返回
NSF
。是的。它还与
USAA
NSFW
匹配,工作非常完美!非常感谢!
>>> 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',)
filter(re.compile(r'\b[A-Z]{3}(?![A-Z])').search, ['.ANS', 'ANSs', 'AANS', 'ANS.'])