正则表达式匹配Python

正则表达式匹配Python,python,regex,Python,Regex,我正在分析一个文件,希望找到文件中或的起始位置 然后我想把橙色的值取出来 我将如何使用正则表达式来实现这一点 到目前为止,我有这个(这是不够的,因为它不寻找颜色有值的情况): def main(): basefile=open(“base.txt”) libfile=open(“file.txt”) 行=[] 而1: line=libfile.readline() 行。追加(“%s”%libfile.readline()) 如果不是直线: 打破 inlibrary=0 newlibrary=[]

我正在分析一个文件,希望找到文件中
的起始位置

然后我想把橙色的值取出来

我将如何使用正则表达式来实现这一点

到目前为止,我有这个(这是不够的,因为它不寻找颜色有值的情况):

def main():
basefile=open(“base.txt”)
libfile=open(“file.txt”)
行=[]
而1:
line=libfile.readline()
行。追加(“%s”%libfile.readline())
如果不是直线:
打破
inlibrary=0
newlibrary=[]
对于行中的行:
如果行中有“”:

如果您的问题是匹配的正则表达式,请查看它们:

>>> m = re.match("<color(?:\s*=\s*(.*?))?>", "<color>asdfsdaf")
>>> m, m.groups()
(<_sre.SRE_Match object at 0x7fb0579467b0>, (None,))
>>> m = re.match("<color(?:\s*=\s*(.*?))?>", "<color=fuschia>asdfsdaf")
>>> m, m.groups()
(<_sre.SRE_Match object at 0x7fb057946738>, ('fuschia',))
>>> m = re.match("<color(?:\s*=\s*(.*?))?>", "foobarbaz")
>>> m #None
>>>
>m=re.match(“,“asdfsdaf”)
>>>m,m.群()
(,(无))
>>>m=重新匹配(“,“asdfsdaf”)
>>>m,m.群()
(,(‘fuschia’,))
>>>m=重新匹配(“,“foobarbaz”)
>>>没有
>>>

但是您确实应该使用XML解析器来完成这项工作。

如果您不想使用完整的XML解析器,应该这样做:

import re
with open("file.txt") as libfile:
    lines_with_color = []
    for line in libfile.readlines():
       if re.match("<color(=[^>]+)?>", line):
           lines_with_color.append(line)
重新导入
以open(“file.txt”)作为libfile:
带有颜色=[]的线
对于libfile.readlines()中的行:
如果重新匹配(“]+)?>”,第行):
带有颜色的行。附加(行)

您的数据是什么格式的?可能有一些库可以满足您的需要。请先阅读本文,然后使用XML解析器,这将为您省去很多麻烦。
不是XML。
import re
with open("file.txt") as libfile:
    lines_with_color = []
    for line in libfile.readlines():
       if re.match("<color(=[^>]+)?>", line):
           lines_with_color.append(line)