在正则表达式Python中查找包含所有大写字母的行
我正在尝试使用正则表达式查找所有都是大写的行,到目前为止,我已经尝试了以下方法:在正则表达式Python中查找包含所有大写字母的行,python,regex,Python,Regex,我正在尝试使用正则表达式查找所有都是大写的行,到目前为止,我已经尝试了以下方法: re.findall(r'\b\n|[A-Z]+\b', kaizoku) 到目前为止,我的数据库如下: TRAFALGAR LAW You shall not be the pirate king. MONKEY D LUFFY Now! DOFLAMINGO'S UNDERLINGS: Noooooo! 我要它回来 TRAFALGAR LAW MONKEY D LUFFY DOFLAMINGO'S UNDE
re.findall(r'\b\n|[A-Z]+\b', kaizoku)
到目前为止,我的数据库如下:
TRAFALGAR LAW
You shall not be the pirate king.
MONKEY D LUFFY
Now!
DOFLAMINGO'S UNDERLINGS:
Noooooo!
我要它回来
TRAFALGAR LAW
MONKEY D LUFFY
DOFLAMINGO'S UNDERLINGS:
但它还返回了其他东西。
(即:
TRAFALGAR
LAW
Y
MONKEY
D
LUFFY
N
DOFLAMINGO'
S
UNDERLINGS:
N
编辑
到目前为止,我真的认为最适合这个答案的是@Jan的答案
rx = re.compile(r"^([A-Z ':]+$)\b", re.M)
rx.findall(string)
EDIT2找出问题所在,谢谢!您可以使用
[A-Z\W]
检查任何大写字母和非字母数字字符:
import re
s = ["TRAFALGAR LAW", "You shall not be the pirate king.", "MONKEY D LUFFY", "Now!", "DOFLAMINGO'S UNDERLINGS:", "Noooooo!"]
new_s = [i for i in s if re.findall('^[A-Z\d_\W]+$', i)]
输出:
['TRAFALGAR LAW', 'MONKEY D LUFFY', "DOFLAMINGO'S UNDERLINGS:"]
给你
import re
string = """TRAFALGAR LAW
You shall not be the pirate king.
MONKEY D LUFFY
Now!
DOFLAMINGO'S UNDERLINGS:
Noooooo!
"""
rx = re.compile(r"^([A-Z ':]+$)", re.M)
UPPERCASE = [line for line in string.split("\n") if rx.match(line)]
print(UPPERCASE)
或:
两者都会让步
['TRAFALGAR LAW', 'MONKEY D LUFFY', "DOFLAMINGO'S UNDERLINGS:"]
简明的
不需要正则表达式,python有这个方法
如果字符串中所有大小写字符[4]都是大写且至少有一个大小写字符,则返回true,否则返回false
[4] 大小写字符是那些一般类别属性为“Lu”(字母,大写)、“Ll”(字母,小写)或“Lt”(字母,标题)之一的字符
代码 结果
什么是“其他东西”?可能重复的DOFLAMINGO的中有一个报价…请详细说明输出和预期输出()可能重复:也没有努力,当像我这样对regex一无所知的人在不到一分钟的时间内找到它时。@Piintesky:我尝试了那些解决方案,但它对我没有任何回报。@Jean-Françoisfar:非常正确,谢谢你发现它。更新。@Jean-Françoisfar:谢谢你,但如果一句话传给一个仆人,效果就不好了。Wouldn
[A-Z\d\uw]
是否更好,因为它包括数字和下划线(如果可能使用它们)?
['TRAFALGAR LAW', 'MONKEY D LUFFY', "DOFLAMINGO'S UNDERLINGS:"]
a = [
"TRAFALGAR LAW",
"You shall not be the pirate king.",
"MONKEY D LUFFY",
"Now!",
"DOFLAMINGO'S UNDERLINGS:",
"Noooooo!",
]
for s in a:
print s.isupper()
True
False
True
False
True
False