1
00:00:00,530 --> 00:00:02,070
Previously on Prison Break2
00:00:02,110 --> 00:00:03,500
I didn't kill that man, michael.3
00:00:03,800 --> 00:00:05,430
If you didn't kill terrence steadman,我想分析后的数据是
Object  data=new Object();
data.n=1;
data.startTime=00:00:00,530;
data.endTime=00:00:02,070;
data.content="I didn't kill that man, michael.";
....
如何写?谢谢

解决方案 »

  1.   

    1
    00:00:00,530 --> 00:00:02,070
    Previously on Prison Break2
    00:00:02,110 --> 00:00:03,500
    I didn't kill that man, michael.3
    00:00:03,800 --> 00:00:05,430
    If you didn't kill terrence steadman,上面的是一个字符串?每一行后边是否有回车?
      

  2.   

    是一个srt 字幕文件来的
      

  3.   

    我现在写了个
    \d\s\d{2}:\d{2}:\d{2},\d{3} --> \d{2}:\d{2}:\d{2},\d{3}\s*[^\d]*\s*是一组
    2
    00:00:02,110 --> 00:00:03,500
    I didn't kill that man, michael.但我想只匹配I didn't kill that man, michael.对话,如何写?
      

  4.   

    \d\s\d{2}:\d{2}:\d{2},\d{3} --> \d{2}:\d{2}:\d{2},\d{3}\s*([^\d]*)\s*
    整体对应$0,括号里对应$1
      

  5.   

    试试这个
    [a-zA-Z][a-zA-Z\s,']*[a-zA-Z]
      

  6.   

    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test2 {
     
      public static void main(String[] args) throws IOException {
        String subtitle  = readFile("pb.srt");    
        String str = "(\\d+)\\s+(\\d{2}:\\d{2}:\\d{2},\\d{3}) --> (\\d{2}:\\d{2}:\\d{2},\\d{3})\\s+(.+)";
        Pattern pattern = Pattern.compile(str);
        Matcher matcher = pattern.matcher(subtitle);
        List<Subtitle> prisionBreak = new ArrayList<Subtitle>();
        while(matcher.find()) {
          Subtitle sub = new Subtitle();
          sub.setN(Integer.parseInt(matcher.group(1)));
          sub.setStartTime(matcher.group(2));
          sub.setEndTime(matcher.group(3));
          sub.setContent(matcher.group(4));
          prisionBreak.add(sub);
        }
        
        for(Subtitle sub : prisionBreak) {      
          System.out.println(sub.getN());
          System.out.println(sub.getStartTime() + " --> " + sub.getEndTime());
          System.out.println(sub.getContent());
          System.out.println();
        }
      }
      
      public static String readFile(String filename) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader(filename));
        String str = "";
        StringBuffer sb = new StringBuffer();
        String line = System.getProperty("line.separator");   
        while( (str = br.readLine()) != null ) {
          if(str.trim().length() > 0) {
            sb.append(str).append(line);
          }
        }
        br.close();
        return sb.toString();
      }
    }class Subtitle {
      private int n;
      private String startTime;
      private String endTime;
      private String content;
      public String getContent() {
        return content;
      }
      public void setContent(String content) {
        this.content = content;
      }
      public String getEndTime() {
        return endTime;
      }
      public void setEndTime(String endTime) {
        this.endTime = endTime;
      }
      public int getN() {
        return n;
      }
      public void setN(int n) {
        this.n = n;
      }
      public String getStartTime() {
        return startTime;
      }
      public void setStartTime(String startTime) {
        this.startTime = startTime;
      }  
    }