我正在尝试使用正则表达式查找所有大写的行,到目前为止我已经尝试过:
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找出问题所在,谢谢!
不需要正则表达式,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)