我正在编写一个正则表达式来匹配来自 IMDb 音轨数据文件的数据。我的正则表达式大部分都在工作,尽管它们在我的命名组中插入了太多文本。以下面的正则表达式为例:
"^ Performed by '?(?<performer>.*)('? \(qv\))?$"
表演者组包括字符串' (qv)
以及表演者的姓名。不幸的是,由于记录的格式不一致,一些表演者的名字用单引号引起来,而另一些则没有。这意味着就正则表达式而言,它们是可选的。
我尝试使用?>
组说明符将最后一组标记为贪婪组,但这似乎对结果没有影响。
我可以通过更改执行者组以匹配一小部分字符来改进结果,但这会降低我正确解析名称的机会。此外,如果我只是排除撇号字符,我将无法解析包含撇号的乐队名称,例如 Elia 的 Lonely Friends Band,他们在Resident Evil: Apocalypse中表演了Run For Your Life。
更新: 这是正则表达式应按要求匹配的示例输入行。还提供了我现有的正则表达式无法处理的其他格式。
" Performed by 'Carmen Silvera' (qv)"