我有一个包含以下行的txt文件。
<KEY key="Spread" keyvalue="FILENAME">
如何使用正则表达式从上面提取FILENAME 到目前为止,我已经尝试过(在我的python脚本中):
if '"Spread" keyvalue' in line:
n = re.search(r'\keyvalue="(.*)', line)
name = n.group()
print name
这给出了输出:
keyvalue="FILENAME">
但我只想输出:
FILENAME
我需要的正则表达式是什么?
答案 0 :(得分:1)
将正则表达式更改为,
n = re.search(r'\bkeyvalue="(.*?)"', line)
name = n.group(1)
示例:的
>>> import re
>>> s = '''<KEY key="Spread" keyvalue="FILENAME">'''
>>> n = re.search(r'\bkeyvalue="(.*?)"', s)
>>> n.group(1)
'FILENAME'
>>>
OR
使用BeautifulSoup。
>>> from bs4 import BeautifulSoup
>>> xml = '''<KEY key="Spread" keyvalue="FILENAME">'''
>>> soup = BeautifulSoup(xml, 'lxml')
>>> s = soup.find('key', attrs={'key':'Spread'})
>>> s.get('keyvalue', None)
'FILENAME'
答案 1 :(得分:0)
另一种尝试模式:
>>> line = '<KEY key="Spread" keyvalue="FILENAME">'
>>> re.findall('\s+keyvalue=\"([^"]+)\"', line)
['FILENAME']
答案 2 :(得分:0)
试试以下正则表达式。我正在使用lookbehind功能。:
(?<=keyvalue=\").*?(?=\")
您的代码应如下所示:
line = '<KEY key="Spread" keyvalue="FILENAME">'
match = re.search(r"(?<=keyvalue=\").*?(?=\")", line, re.MULTILINE)
if match:
result = match.group()
print(result)
如果匹配成功,则应打印FILENAME
。