簡體   English   中英

使用正則表達式從python中的字符串中刪除大括號

[英]remove curly braces from string in python using regex

我想要一個正則表達式來搜索logger.error("pbType",

並排除帶有{}的示例,例如:

logger.info("URL:\n\"{}\"\n",

這對我re.search('.*logger.*"[\\w.:-_()\\[\\]]*"\\s*,',line)

它以{}返回行。 請幫忙謝謝

讓我們看看您當前的正則表達式如何解析有問題的行:

.*|logger|      .*          |"|[\w.:-_()\[\]]*|"|\s*|,
  |      |                  | |               | |   |
  |logger|.info("URL:\n\"{}\|"|\n             |"|   |,

它在正則表達式中將第三個引號用作第一個引號。

要解決此問題,您需要確保".*"不會比您希望的更多。

[^"\n]*logger[^"\n]*"[\w.:-_()\[\]]*"\s*,

另外,您當前的正則表達式中還有其他一些錯誤:

[ :-_ ]包括ASCII范圍在58到95之間的所有字符。如果要在字符集中包含減號,則必須排在前面。

  [-\w.:_()\[\]]

將原始字符串用於正則表達式是一種很好的樣式,因為您知道反斜杠將是反斜杠而不是觸發轉義序列。

 re.search(r'...', line)

您要確保"\\s*,確實得到了字符串的末尾,可能有一個\\",{}沒被抓住的末尾,因此請匹配正則表達式中的行尾...$

總之,這些建議將使您的代碼行:

re.search(r'[^"\n]*logger[^"\n]*"[-\w.:-()\[\]]*"\s*,$', line)

只要做一個if。 無需正則表達式-

for i in l1:
    if not("{}" in i):
        l2.append(i)

考慮到l1是您的字符串列表,l2是必需的結果。

暫無
暫無

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

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