条件匹配不适用于 perl

Conditional matching not working with perl

我必须编写一个正则表达式来匹配以下字符串并提取年份

版权所有 2015 或版权所有 2014-2015

我已经编写了下面给出的正则表达式并尝试在 perl 程序中执行代码

Copyright\s+(?(?=\d+\s*-\s*\d+)(\d+)\s*-\s*(\d+)|(\d+))

上面给出的正则表达式匹配字符串 Copyright 2014-2015,但当字符串为 Copyright 2015 时失败。我做错了什么?

您的正则表达式有效:

Copyright\s+(?(?=\d+\s*-\s*\d+)(\d+)\s*-\s*(\d+)|(\d+))

比赛:版权所有 2015 in capturing group 3
匹配:Copyright 2014-2015 in capturing group 1 and 2


Copyright\s+(\d+)(?:\s*-\s*(\d+))?

比赛:第 1 组版权所有 2015
匹配:Copyright 2014-2015 in capturing group 1 and 2