正则表达式:获取所有单词,直到找到一些特殊字符

时间:2014-12-01 18:13:31

标签: java regex

我正在尝试从列表中提取电影名称,如下所示:

  

The Maze Runner 2014 DVDRip XviD MP3-RARBG

     

Fury 2014 DVDSCR x264 AC3-Blackjesus

     

Dracula的不为人知的故事(WebRip / 2014)

我需要提取一年中的字词或特殊字符,例如([,但不是'

  

The Maze Runner 2014 DVDRip XviD MP3-RARBG ==>迷宫亚军

     

Fury 2014 DVDSCR x264 AC3-Blackjesus ==>怒

     

德古拉的不为人知的故事(WebRip / 2014)==德古拉的不为人知的故事

     

德古拉的不为人知的故事[WebRip / 2014] ==德古拉的不为人知的故事

我不知道如何继续写这样复杂的正则表达式。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

以下代码段有助于满足您的要求

public static String extractMovieName(String movieNameString){
        Pattern pattern = Pattern.compile("([\\w' ]+)([\\[]|[\\(]|[\\d]{4})");
        Matcher matcher = pattern.matcher(movieNameString);
        String extractedName = "";
        if(matcher.find()){
            extractedName =  matcher.group(1);
        }
        return extractedName;
    }

答案 1 :(得分:0)

^[a-zA-Z0-9\ '-]+(?=\b\d{4}\b|\()

试试这个。看看演示。

http://regex101.com/r/yR3mM3/4

答案 2 :(得分:0)

尝试以下代码:

示例:

System.out.println("Fury 2014 DVDSCR x264 AC3-Blackjesus".replaceAll("\\s(\\d|\\(|\\[).*", ""));