我正在寻找的是一个搜索词的资本在蟒蛇一条线,像我有一个* .TXT逻辑标识线:连续用大写字母
aaa
adadad
DDD_AAA
Dasdf Daa
我想只为搜索具有两个或更多大写单词的行(在上述情况下为DDD_AAA
)。
我正在寻找的是一个搜索词的资本在蟒蛇一条线,像我有一个* .TXT逻辑标识线:连续用大写字母
aaa
adadad
DDD_AAA
Dasdf Daa
我想只为搜索具有两个或更多大写单词的行(在上述情况下为DDD_AAA
)。
print re.findall("[A-Z][a-zA-Z]*\s[A-Z][a-zA-Z]",search_text)
应努力满足2个字,这两个启动以大写字母
为您具体的例子
lines = []
for line in file:
if re.findall("[A-Z][a-zA-Z]*\s[A-Z][a-zA-Z]",line): lines.append(line)
print lines
主要考虑的正则表达式!
OP似乎寻找所有的CAPS,而不是以大写字母开头。 – ATOzTOA 2013-03-11 16:57:46
meh ...我试图演示一些正则表达式的东西......他可以使正则表达式匹配他的“大写字” – 2013-03-11 16:59:42
正则表达式是要走的路:你要弄清楚究竟你正在寻找的,虽然
import re
pattern = "([A-Z]+_[A-Z]+)" # matches CAPITALS_CAPITALS only
match = re.search(pattern, text)
if match: print match.group(0)
。
的具体定义,谢谢jochem,但大写字母不知道。我需要,如果任何conscutice大写字母退出 – Ganderous 2013-03-11 17:15:13
意味着你的一个“资本字”的定义是两个或多个大写字母(非数字)字符的字符串,即[A-Z]
,并假设什么隔开一个来自另一个“资本词”是不太补集([^A-Z]
),而是互补集的字母数字字符,即[^a-zA-Z0-9]
,你正在寻找一个正则表达式像
\b[A-Z]{2,}\b.*\b[A-Z]{2,}\b
我说喜欢因为上述不完全正确:\b
将下划线_
作为单词字符。与[^a-zA-Z0-9]
小号包裹在环视断言(使他们的零宽,像\b
)更换\b
S,和你有正确的正则表达式:
(?<=[^a-zA-Z0-9]|^)[A-Z]{2,}(?=[^a-zA-Z0-9]).*(?<=[^a-zA-Z0-9])[A-Z]{2,}(?=[^a-zA-Z0-9]|$)
最后,如果你考虑一个单字符字,一个 “字”,后来干脆废除了{2,}
量词:
(?<=[^a-zA-Z0-9]|^)[A-Z]+(?=[^a-zA-Z0-9]).*(?<=[^a-zA-Z0-9])[A-Z]+(?=[^a-zA-Z0-9]|$)
在这里你去:
import re
lines = open("r1.txt").readlines()
for line in lines:
if re.match(r'[^\w]*[A-Z]+[ _][A-Z]+[^\w]*', line) is not None:
print line.strip("\n")
输出:
DDD_AAA
什么是你的一个字的定义是什么? – NPE 2013-03-11 16:46:39
它的一个巨大的文件。我正在逐行解析。 – Ganderous 2013-03-11 16:48:01
他的意思是它只有字母?字母和数字?以下划线开头?等 – 2013-03-11 16:49:52