在 Regex Python 中查找全部大写的行

Sun*_*gue 2 python regex

我正在尝试使用正则表达式查找所有大写的行,到目前为止我已经尝试过:

re.findall(r'\b\n|[A-Z]+\b', kaizoku)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我的数据库如下:

TRAFALGAR LAW
You shall not be the pirate king.
MONKEY D LUFFY
Now!
DOFLAMINGO'S UNDERLINGS:
Noooooo!
Run Code Online (Sandbox Code Playgroud)

我想要它回来

TRAFALGAR LAW
MONKEY D LUFFY
DOFLAMINGO'S UNDERLINGS:
Run Code Online (Sandbox Code Playgroud)

但它返回了别的东西。(即这个:

TRAFALGAR
LAW
Y
MONKEY
D
LUFFY
N
DOFLAMINGO'
S
UNDERLINGS:
N
Run Code Online (Sandbox Code Playgroud)

编辑 到目前为止,我真的认为最适合答案的是@Jan 的答案

rx = re.compile(r"^([A-Z ':]+$)\b", re.M)
rx.findall(string)
Run Code Online (Sandbox Code Playgroud)

EDIT2找出问题所在,谢谢!

ctw*_*els 5

简短的

不需要正则表达式,python有方法 isupper()

如果字符串中的所有大小写字符[4]都是大写并且至少有一个大小写字符,则返回 true,否则返回 false。

[4] 大小写字符是具有一般类别属性为“Lu”(字母,大写)、“Ll”(字母,小写)或“Lt”(字母,标题大小写)之一的字符。


代码

在此处查看正在使用的代码

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()
Run Code Online (Sandbox Code Playgroud)

结果

True
False
True
False
True
False
Run Code Online (Sandbox Code Playgroud)