Python正则表达式模式不匹配

H4Z*_*Z3Y 2 python regex file

我正在尝试使用一些正则表达式来解析存储在一组lua文件中的一些值,每一行看起来像这两行中的一行

  1. ITEM.ID = 'item_clock';\r\n
  2. ITEM.Cost = 150;\r\n.

当我在第一行运行我的正则表达式模式时,我得到了预期的结果

>>> re.search("ITEM.(?P<key>[a-zA-Z]\w) = (?P<value>.*);", line).groupdict()
{'key': 'ID', 'value': "'item_clock'"}
Run Code Online (Sandbox Code Playgroud)

但是当我在第二行运行它时,我没有得到Match对象.

NPE*_*NPE 7

正则表达式ITEM.后面跟着一个字母,然后是一个单词字符(\w在正则表达式中).

你可能意味着ITEM.(?P<key>[a-zA-Z]\w*)... ...(注意添加的星号).这将查找ITEM.后跟一个字母,然后是零个或多个单词字符.

此外,最好将正则字符串用于正则表达式,以避免难以发现的错误:

r"ITEM.(?P<key>[a-zA-Z]\w*) = (?P<value>.*);"
Run Code Online (Sandbox Code Playgroud)

(注意r前缀).

  • @ H4Z3Y:我刚刚添加了关于原始字符串的注释.我认为这是一个很好的习惯. (2认同)