Correspondência simples de Regex não funciona

2

Eu tenho os dados abaixo que eu estou tentando analisar o título com cada um dos seguintes RegEx, algumas entradas têm um (ano) ou outro não. mesmo com o número do banco de dados. parece ter resultados diferentes.

link

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

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

Dados

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)

Alguém tem uma pista sobre o que estou perdendo?

    
por user68650 10.04.2016 / 21:09

1 resposta

1

Usando o mecanismo perl regexp (você não especificou o que está usando), isso pode ser obtido com:

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

O truque é fazer com que o primeiro .* corresponda a não-ganancioso com .*? ou consuma a parte do ano para qualquer linha que tenha um ano e o ID -tt.

    
por 10.04.2016 / 21:16