简单的正则表达式匹配不起作用

简单的正则表达式匹配不起作用

我有下面的数据,我试图用以下每个正则表达式解析标题,一些条目有(年份)或其他没有。与数据库编号相同。似乎得到了不同的结果。

https://regex101.com/r/lS9fQ2/2

(.*) every character until a "_(" (space open parenthesis) or "-tt" (dash tt) is found

    (.*)\s\(|\-tt
    (.*)(\s\(|\-tt)

数据

Minions 2-tt2293640
Minions 2 (2012)-tt2293640
Chappie (2015)
Peanuts Movie, The (2015)
Batman Bad Blood (2016)-tt4870838
Ant-Man (2015)-tt0478970
22 Jump Street (2014)-tt2294449
Bean (1997)
Bedtime Stories (2008)
Begin Again (2013)
Beneath the Planet of the Apes (1970)
Best of Me, The (2014)
Beverly Hills Cop (1984)
Beverly Hills Cop II (1987)
Beverly Hills Cop III (1994)
Big Hero 6 (2014)
Big Short, The-tt1596363
Birdman (2014)
Biutiful (2010)
Black Book (2006)
Blackhat (2015)-tt2717822
Black Hawk Down (2001)
Black Mass (2015)-tt1355683
Black Swan (2010)
Blade Runner (1982)-tt0083658
Blended (2014)
Blood Ties (2013)
Body Of Lies (2008)
Bolt (2008)
Born To Be Wild (2011)

有人知道我缺少什么吗?

答案1

使用perl正则表达式引擎(您没有指定您正在使用的引擎),可以通过以下方式实现:

perl -pe 's/^(.*?)( \(|-tt).*/\1/' < indata.txt

诀窍是使第一个.*匹配与 不贪婪.*?,否则它将消耗任何同时具有年份和 -tt id 的行的年份部分。

相关内容