[英]Find a regular expression in between two characters
我有一個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
我需要什么正則表達式?
將您的正則表達式更改為
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'
>>>
要么
使用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'
嘗試的另一種模式:
>>> line = '<KEY key="Spread" keyvalue="FILENAME">'
>>> re.findall('\s+keyvalue=\"([^"]+)\"', line)
['FILENAME']
嘗試遵循正則表達式。 我正在使用后向功能。:
(?<=keyvalue=\").*?(?=\")
您的代碼應如下所示:
line = '<KEY key="Spread" keyvalue="FILENAME">'
match = re.search(r"(?<=keyvalue=\").*?(?=\")", line, re.MULTILINE)
if match:
result = match.group()
print(result)
如果匹配成功,則應打印FILENAME
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.