簡體   English   中英

具有屬性的模板標簽的正則表達式

[英]Regex for template tag with attributes

閱讀完所有這些文章后,我還沒有找到答案,所以我希望你們當中一位擊球正則表達式的人可以幫助我。 我正在嘗試從以下字符串格式中隔離標記名稱和所有屬性:

{TAG:TYPE attr1="foo" attr2="bar" attr3="zing" attr4="zang" attr5="zoom" ...}

注意:在上面的示例中,TAG將始終相同,而TYPE將是多個預設字符串之一(例如,共享,打印,顯示等)。 TAG和TYPE僅在示例中為大寫,而對於實際情況則不區分大小寫。

目前,讓我們假設您的屬性名稱和值以及TAG和TYPE都是字母數字。 如果在這些字符串中包含“或=”,則解析會變得更加混亂(甚至可能不是常規的)。

有了這些警告,下面是完成工作的python正則表達式:

>>> parse_regex=r'\{(?P<tag>\w+):(?P<type>\w+)(?P<attrs>(\s+\w+=\"\w+\")*)\}'
>>> m = re.match(parse_regex, str)
>>> m.group('tag')
'TAG'
>>> m.group('type')
'TYPE'
>>> m.group('attrs')
' attr1="foo" attr2="bar" attr3="zing" attr4="zang" attr5="zoom"'

此時,您需要將屬性清理為友好的數據結構。 由於可以任意選擇其中的許多,因此在此階段不使用正則表達式將更加方便(並且同樣有效)。

>>> [attr_str.split('=') for attr_str in m.group('attrs').split()]
[['attr1', '"foo"'], ['attr2', '"bar"'], ['attr3', '"zing"'], ['attr4', '"zang"'], ['attr5', '"zoom"']]

暫無
暫無

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

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