我试图找到所有使用正则表达式全部大写的行,到目前为止我已经尝试过这个:
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 发现了什么错,谢谢!
答案 0 :(得分:3)
你去吧
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)
或者:
rx = re.compile(r"^([A-Z ':]+$)", re.M)
UPPERCASE = rx.findall(string)
print(UPPERCASE)
两者都会产生
['TRAFALGAR LAW', 'MONKEY D LUFFY', "DOFLAMINGO'S UNDERLINGS:"]
答案 1 :(得分:3)
不需要正则表达式,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()
True
False
True
False
True
False
答案 2 :(得分:1)
您可以使用[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:"]