我正在尝试使用一些正则表达式来解析存储在一组lua文件中的一些值,每行看起来像这两行中的一行
ITEM.ID = 'item_clock';\r\n
ITEM.Cost = 150;\r\n
。当我在第一行运行我的正则表达式模式时,我得到了预期的结果
>>> re.search("ITEM.(?P<key>[a-zA-Z]\w) = (?P<value>.*);", line).groupdict()
{'key': 'ID', 'value': "'item_clock'"}
然而,当我在第二行上运行它时,我没有得到Match对象。
答案 0 :(得分:7)
正则表达式查找ITEM.
后跟一个字母,然后是正好一个字符(正则表达式中的\w
)。
你可能意味着ITEM.(?P<key>[a-zA-Z]\w*)
......(注意添加的星号)。这将查找ITEM.
后跟一个字母,然后是零个或多个字符。
此外,最好将raw strings用于正则表达式,以避免难以发现的错误:
r"ITEM.(?P<key>[a-zA-Z]\w*) = (?P<value>.*);"
(注意r
前缀)。
答案 1 :(得分:1)
接受的答案是对的。小调整......
通常一个好主意是在“=”周围允许多个空格(或没有空格)
r“ITEM \。(?P&lt; key&gt; [a-zA-Z] \ w *)* = *(?P&lt; value&gt;。*?)*;”