正则表达式行在 regex101 中有效,但在代码中抛出一个 "bad character in group name"(在 If 子句内)
regex line works in regex101, but throws an "bad character in group name" in code (inside If clause)
我正在尝试解析游戏中的战斗日志。我检查“(严重)”的解决方案导致了一些问题。
前瞻条件似乎是捕获数据的唯一方法,即使“(关键)”不存在也是如此。这适用于 regex101
var = re.compile("(?P<hour>\d{2}):(?P<min>\d{2}):(?P<sec>\d{2}):(?P<milsec>\d{3}) (\[Loot] Gained (?P<xp>\S+) XP?|\[Loot] Item Acquired: (?P<loot>.*)|\[Loot] Gained (?P<dram>\S+) Dram?|\[Loot] Earned (?P<reputation>\S+) Reputation?|\[Combat] (?P<dude_hurt>.+) took (?P<damages>\S+) damage from (?P<damage_dealer>[\S]+)(?(?=.) (?P<crit>\(Critical\))|))")
re.error: 组名中的错误字符 ?=.
在位置 303
这是最后一部分:(?(?=.) (?P<crit>\(Critical\))|))")
示例数据:
19:59:16:394 [Combat] player1 took 4301 damage from Stafrusher(47)
19:59:16:547 [Combat] Stafrage(45) took 12049 damage from player2
19:59:17:060 [Combat] Stafrage(45) took 8621 damage from player3 (Critical)
19:59:17:375 [Combat] Stafrage(45) took 7931 damage from player2 (Critical)
如果你看一下 regex101 上的正则表达式,当切换到 python 方言 时,它会显示模式错误 incomplete group structure
错误
python方言中有错误的正则表达式:https://regex101.com/r/vlHCCO/2
你可能想要一个不匹配的组,需要缺少一个 :
编辑:我重新阅读了你的问题,我注意到你可能只想匹配具有关键性的行。这是正则表达式。
固定正则表达式:https://regex101.com/r/vlHCCO/4
除此之外,如果使用一组可以更轻松地完成同一件事并且 "19:59:16:547".split(":")
-> ["19", "59", "16" "547"]
[=16=,您真的需要将每个(时间?)数字单独分组吗]
我正在尝试解析游戏中的战斗日志。我检查“(严重)”的解决方案导致了一些问题。
前瞻条件似乎是捕获数据的唯一方法,即使“(关键)”不存在也是如此。这适用于 regex101
var = re.compile("(?P<hour>\d{2}):(?P<min>\d{2}):(?P<sec>\d{2}):(?P<milsec>\d{3}) (\[Loot] Gained (?P<xp>\S+) XP?|\[Loot] Item Acquired: (?P<loot>.*)|\[Loot] Gained (?P<dram>\S+) Dram?|\[Loot] Earned (?P<reputation>\S+) Reputation?|\[Combat] (?P<dude_hurt>.+) took (?P<damages>\S+) damage from (?P<damage_dealer>[\S]+)(?(?=.) (?P<crit>\(Critical\))|))")
re.error: 组名中的错误字符 ?=.
在位置 303
这是最后一部分:(?(?=.) (?P<crit>\(Critical\))|))")
示例数据:
19:59:16:394 [Combat] player1 took 4301 damage from Stafrusher(47)
19:59:16:547 [Combat] Stafrage(45) took 12049 damage from player2
19:59:17:060 [Combat] Stafrage(45) took 8621 damage from player3 (Critical)
19:59:17:375 [Combat] Stafrage(45) took 7931 damage from player2 (Critical)
如果你看一下 regex101 上的正则表达式,当切换到 python 方言 时,它会显示模式错误 incomplete group structure
错误
python方言中有错误的正则表达式:https://regex101.com/r/vlHCCO/2
你可能想要一个不匹配的组,需要缺少一个 :
编辑:我重新阅读了你的问题,我注意到你可能只想匹配具有关键性的行。这是正则表达式。
固定正则表达式:https://regex101.com/r/vlHCCO/4
除此之外,如果使用一组可以更轻松地完成同一件事并且 "19:59:16:547".split(":")
-> ["19", "59", "16" "547"]
[=16=,您真的需要将每个(时间?)数字单独分组吗]