Python正则表达式模式不匹配

2024-04-27 00:48:34 发布

您现在位置:Python中文网/ 问答频道 /正文

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

  1. ITEM.ID = 'item_clock';\r\n
  2. ITEM.Cost = 150;\r\n。你知道吗

当我在第一行运行regex模式时,我得到了一个预期的结果

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

但是当我在第二行运行它时,我没有得到匹配的对象。你知道吗


Tags: 文件keyreidsearchvalueline模式
2条回答

正则表达式查找ITEM.后跟一个字母,然后再后跟一个单词字符(正则表达式中的\w)。你知道吗

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

另外,最好对正则表达式使用raw strings,以避免难以发现的错误:

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

(注意r前缀)。你知道吗

公认的答案是对的。小调整。。。你知道吗

  • 将“.”后的项转义为“.”,而不仅仅是任何东西
  • 通常在“=”周围留出多个空格(或没有空格)是个好主意

    r“项目\.(?P<;键>;[a-zA-Z]\w*)*=*(?P<;值>;*?)*;“

相关问题 更多 >