簡體   English   中英

查找兩個字符之間的正則表達式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM