簡體   English   中英

在python中使用正則表達式提取項目

[英]extracting items using regular expression in python

我有一個具有以下內容的文件:

new=['{"TES1":"=TES0"}}', '{"""TES1:IDD""": """=0x3C""", """TES1:VCC""": """=0x00"""}']

我正在嘗試從列表中提取第一項TES1:= TES0。 我正在嘗試使用正則表達式來執行此操作。 這是我嘗試過的,但是我無法抓住第二項TES0。

import re
TES=re.compile('(TES[\d].)+')
for item in new:
    result = TES.search(item)
    print result.groups()

打印結果為('TES1:',)。 我嘗試了多種方法來提取它,但是總是得到相同的結果。 任何建議或幫助表示贊賞。 謝謝!

我認為您正在尋找findall

import re
TES=re.compile('TES[\d].')
for item in new:
    result = TES.findall(item)
    print result

您可以使用單個替換,例如:

import re

result = re.sub(r'{"(TES\d)":"(=TES\d)"}}', '$1:$2', yourstr, 1)

第一選擇(帶引號)

要匹配"TES1":"=TES0" ,可以使用此正則表達式:

"TES\d+":"=TES\d+"

像這樣:

match = re.search(r'"TES\d+":"=TES\d+"', subject)
if match:
    result = match.group()

第二種選擇(不帶引號)

如果要刪除引號,例如TES1:=TES0 ,請使用此正則表達式:

搜索: "(TES\\d+)":"(=TES\\d+)"

替換: \\1:\\2

像這樣:

result = re.sub(r'"(TES\d+)":"(=TES\d+)"', r"\1:\2", subject)

它是如何工作的?

"(TES\d+)":"(=TES\d+)"
  • 從字面上匹配字符“” "
  • 匹配下面的正則表達式,並將其匹配捕獲到反向引用編號1 (TES\\d+)
    • 從字面上匹配字符串“ TES”(區分大小寫) TES
    • 匹配一個為“數字”的字符(在任何Unicode腳本中為0–9) \\d+
      • 在一次和無限次之間,盡可能多次,根據需要進行回饋(貪婪) +
  • 從字面上匹配字符串““:”“ ":"
  • 匹配下面的正則表達式,並將其匹配捕獲到反向引用2中(=TES\\d+)
    • 從字面上匹配字符串“ = TES”(區分大小寫) =TES
    • 匹配一個為“數字”的字符(在任何Unicode腳本中為0–9) \\d+
      • 在一次和無限次之間,盡可能多次,根據需要進行回饋(貪婪) +
  • 從字面上匹配字符“” "

    \\ 1:\\ 2

  • 插入通過捕獲組號1 \\1最后匹配的文本

  • 從字面上插入字符“:” :
  • 插入通過捕獲組號2 \\2最后匹配的文本

暫無
暫無

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

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