簡體   English   中英

使用正則表達式在Python中grep字符串

[英]Using regex to grep a string in Python

我正在嘗試使用python中的re在列表中grep兩種模式:

'<xyz>number followed by optional *</xyz>'
'name="namepad">number</xyz>

在python中使用正則表達式,我無法使用星號獲取數據。 這是一個示例會話,該如何做才能使過濾器還返回第一個元素?

>>> k = ['<xyz>27*</xyz>', 'name="namePad">22</xyz>']
>>> f = filter(lambda x:re.search('^name="namePad"|^<xyz>[0-9]{1,3}\*"  <\/xyz>',x), k)
>>> f
['name="namePad">22</xyz>']

您的正則表達式不匹配"引號。請嘗試以下操作:

filter(lambda x:re.search(r'^name="namePad"|^<xyz>[\d]{1,3}\*?</xyz>',x), k)

它會為您提供以下內容:

['27 *','name =“ namePad”> 22']

您可以使用re.match因為僅在字符串的開頭檢查匹配項。 同樣,您也不需要過濾器使用列表推導。

>>> [i for i in k if re.match(r'(<xyz>|name="namePad">)\d+\*?', i)]
['<xyz>27*</xyz>', 'name="namePad">22</xyz>']

? *后面的*表示*是可選的,您可以在此處閱讀有關量詞的更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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