Python 如何使用正则表达式匹配至少包含一个大写字母但并非全部为小写的特定单词?

Python 如何使用正则表达式匹配至少包含一个大写字母但并非全部为小写的特定单词?,python,regex,Python,Regex,我想匹配一个特定单词“StackOverflow”、“StackOverflow”或“StackOverflow”等。至少有一个字符应大写,但所有小写字母“StackOverflow”的单词不应匹配 非常感谢您的帮助。这使用单词边界来确保一个单词,并检查至少一个大写字母 import re text = 'StackOverflow STACKOVERFLOW stACKoverFlow stackoverflow' matches = re.findall(r'\b.*?[A-Z]{1}.*?

我想匹配一个特定单词“StackOverflow”、“StackOverflow”或“StackOverflow”等。至少有一个字符应大写,但所有小写字母“StackOverflow”的单词不应匹配


非常感谢您的帮助。

这使用单词边界来确保一个单词,并检查至少一个大写字母

import re
text = 'StackOverflow STACKOVERFLOW stACKoverFlow stackoverflow'
matches = re.findall(r'\b.*?[A-Z]{1}.*?\b', text)
#['StackOverflow', ' STACKOVERFLOW', ' stACKoverFlow']
text = 'StackOverflow STACKOVERFLOW stACKoverFlow stackoverflow'
matches = [word for word in text.split() if any(letter.isupper() for letter in word) and word.lower() == 'stackoverflow']
#['StackOverflow', 'STACKOVERFLOW', 'stACKoverFlow']
这是如何在没有正则表达式的情况下实现的。它将完全匹配“stackoverflow”,只要它至少有大写字母

import re
text = 'StackOverflow STACKOVERFLOW stACKoverFlow stackoverflow'
matches = re.findall(r'\b.*?[A-Z]{1}.*?\b', text)
#['StackOverflow', ' STACKOVERFLOW', ' stACKoverFlow']
text = 'StackOverflow STACKOVERFLOW stACKoverFlow stackoverflow'
matches = [word for word in text.split() if any(letter.isupper() for letter in word) and word.lower() == 'stackoverflow']
#['StackOverflow', 'STACKOVERFLOW', 'stACKoverFlow']

您可以使用此正则表达式:

\b(?=.*[A-Z])(?i)stackoverflow\b

在python中,类似于:

import re
p = re.compile(ur'\b(?=.*[A-Z])(?i)stackoverflow\b')
test_str = u"StackOverflow\nSTACKOVERFLOW\nstACKoverFlow\nstackoverflow\n"

re.findall(p, test_str)
:

您必须使用此长正则表达式:

regex = re.compile(r"^(?!stackoverflow$)[sS][tT][aA][cC][kK][oO][vV][eE][rR][fF][lL][oO][wW]$");

谢谢您的回复。我想匹配特定的单词“Stackoverflow”,但不是一般的单词。您明确表示“Stackoverflow”不应匹配对不起,我应该键入我想匹配的单词是“Stackoverflow”,“Stackoverflow”,“Stackoverflow”,而不是“Stackoverflow”。但我想匹配那个特定的词,而不是一般的词。谢谢你的回复。谢谢你的回复。但是我不想匹配任何其他单词,比如“你好”,谢谢你的回复。我想用大写字母来匹配特定的单词“Stackoverflow”,而不是一般的单词。看起来你需要使用。或者使用
\b
(如果它是较长字符串的一部分)而不是
^
/
$
。它必须是正则表达式吗?直蟒蛇更适合这个……谢谢你们的回复。问题解决了。我是一个新用户,很抱歉我不能为你们所有人投票。@anubhava,那个regexp只能识别一个大写字母的单词<代码>^[a-zA-Z]*[a-Z][a-zA-Z]*$应该更好。非常感谢。我想这就是我想要的。检查更新答案中的代码,看看它是否有效。根据@anubhava
(?I)
,在python中不起作用。所以我猜他的答案是正确的。