Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在正则表达式Python中查找包含所有大写字母的行_Python_Regex - Fatal编程技术网

在正则表达式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