簡體   English   中英

如何在python中的多行括號之間匹配文本

[英]How to match text between brackets across multiple lines in python

假設我有一個需要處理的文件:

names = [
    joe
    billy
    kate
]

我想使用正則表達式來匹配字符串

[
    joe
    billy
    kate
]

並刪除其中的換行符。

我努力了

with open('file.txt', 'r') as f:
    data = f.readlines()
file = "".join(data)
search = re.search(r'= \[[^]*\]', file, re.MULTILINE)

但我收到錯誤sre_constants.error: unexpected end of regular expression 我已經在http://regexr.com/上嘗試過正則表達式,並且工作正常。 我的python腳本怎么了?

編輯:我真正的問題看起來像

names = [
    joe[ggg]
    billy[ddd]
    kate[aaa]
]

您需要使用先行聲明,斷言[ ]僅后跟空格或行尾,並且必須以空格字符開頭。

search = re.search(r'(?s)= (\[.*?\s\])(?=\s|$)', file)

DEMO

暫無
暫無

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

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