我正在尝试使用正则表达式来标记我从 IMDB 的文本界面下载的电影标题。
RE 的简化版本将演示我遇到的问题。这是一个示例标题:
"'Allo 'Allo!" (1982)
"A film in production" (????)
我可以像这样匹配它:
re=/(\".*\")\s(\(.{4}\));
然后我可以使用子表达式在 javascript 中标记电影,就像这样:
titleParts = rawTitle.match(re);
console.log('title %s', titleParts[0]);
但后来我发现了这样的电影片名:
Unquoted film title (2012)
因为标题周围没有引号,所以我不能再将元素匹配到子表达式中:
re=/((\"){0,1}.*(\"){0,1})\s(\(.{4}\));
请注意,我通过指定引号是可选的来更改原始 RE。但是现在发生的是整个字符串匹配第一个 subExpression。
我该如何解决这个问题?