[英]Extracting brackets with regex from a string in python
如果我們只知道“模板”,如何從此字符串中提取{{template | {{template2}} |其他params}}:
{{template0}}
{{template|{{template2}}|other params}}
{{template3}}
這應該做你想要的:
>>> match = re.search(r'^{{template\b.*$', your_string, re.M)
>>> match.group()
'{{template|{{template2}}|other params}}'
它在'template'之后使用單詞邊界( \\b
),因此它不匹配'template0'或'template3'。 使用re.M
選項,因此^
和$
將匹配行的開頭和結尾,而不是字符串的開頭和結尾。
編輯:從評論中為新行案例嘗試以下正則表達式:
r'^{{template\b(?:[^}]\n+|\n+[^{]|.)*$'
無論你在|
之前還是之后放置換行符,這都應該有效 。
編輯2:這是您指定的輸入可以是什么樣子了前面正則表達式的問題非常重要。 這是另一個版本,與您最新評論中的文本一起使用:
r'^{{template\b(?:[^}\n]\n+|\n+[^{\n]|.)*}}$'
現在它將正確處理多個換行符,並且我最后添加了}}
,以防你的匹配是帶有其他格式的行之前的最后一個括號內組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.