Java Regex在大行

时间:2017-01-17 23:11:35

标签: java regex

我正在使用一个小的Java应用程序来使用正则表达式解析.txt文件中的数值数据。我正在查看的文件在我不想要的数字数据之前有许多标题行。一个小的复杂因素是该数值数据可能具有用NaN表示的空值。我们的想法是匹配任何没有a-zA-Z的行,除非它是模式NaN。我有一个有效的正则表达式,你可以看到它here

我试图在Java中实现它;我编写了一个简单的java测试类,它逐行提供文件。它适用于较小的文件,但我有很大的我想要工作。当我尝试它们时遇到StackOverFlowException。我的猜测是正则表达式的贪婪本质导致.matches方法从它需要的所有内存中爆炸出来......?

我写了一个second regex,看看它是不是我的第一个问题,但java仍然失败。

  1. 有没有更有效的方法来实现我的正则表达式的目标?我猜它的贪婪导致它溢出
  2. 是否有另一个可能没有此问题的正则表达式库?
  3. 是否有更智能的方式将文件提供给.matches方法?
  4. 以下是我正在使用

    的java
    package Test;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    
    public class MainClass {
    
        public static void main(String[] args) throws FileNotFoundException, IOException {
            File file = new File("small.txt");
            String regex = "^((NaN)?[^a-zA-Z\r\n])*$";
    
            try (BufferedReader br = new BufferedReader(new FileReader(file))) {
                String line;
                while ((line = br.readLine()) != null) {
                    System.out.println(line + " -> " + line.matches(regex));
                }
            }
        }
    
    }
    

    我可以尝试一些示例.txt文件。小的工作,大不工作

    small.txt

    large.txt

    最后,这是我得到的错误....它很长。

    Exception in thread "main" java.lang.StackOverflowError
        at java.util.regex.Pattern$7.isSatisfiedBy(Unknown Source)
        at java.util.regex.Pattern$7.isSatisfiedBy(Unknown Source)
        at java.util.regex.Pattern$CharProperty.match(Unknown Source)
        at java.util.regex.Pattern$Branch.match(Unknown Source)
        at java.util.regex.Pattern$GroupHead.match(Unknown Source)
        at java.util.regex.Pattern$Loop.match(Unknown Source)
        at java.util.regex.Pattern$GroupTail.match(Unknown Source)
        at java.util.regex.Pattern$CharProperty.match(Unknown Source)
        at java.util.regex.Pattern$Branch.match(Unknown Source)
        at java.util.regex.Pattern$GroupHead.match(Unknown Source)
        at java.util.regex.Pattern$Loop.match(Unknown Source)
        at java.util.regex.Pattern$GroupTail.match(Unknown Source)
        at java.util.regex.Pattern$CharProperty.match(Unknown Source)
        at java.util.regex.Pattern$Branch.match(Unknown Source)
        at java.util.regex.Pattern$GroupHead.match(Unknown Source)
        at java.util.regex.Pattern$Loop.match(Unknown Source)
        at java.util.regex.Pattern$GroupTail.match(Unknown Source)
        at java.util.regex.Pattern$CharProperty.match(Unknown Source)
        at java.util.regex.Pattern$Branch.match(Unknown Source)
        at java.util.regex.Pattern$GroupHead.match(Unknown Source)
        at java.util.regex.Pattern$Loop.match(Unknown Source)
        at java.util.regex.Pattern$GroupTail.match(Unknown Source)
        at java.util.regex.Pattern$CharProperty.match(Unknown Source)
        at java.util.regex.Pattern$Branch.match(Unknown Source)
        at java.util.regex.Pattern$GroupHead.match(Unknown Source)
        at java.util.regex.Pattern$Loop.match(Unknown Source)
        at java.util.regex.Pattern$GroupTail.match(Unknown Source)
        at java.util.regex.Pattern$CharProperty.match(Unknown Source)
        at java.util.regex.Pattern$Branch.match(Unknown Source)
        at java.util.regex.Pattern$GroupHead.match(Unknown Source)
        at java.util.regex.Pattern$Loop.match(Unknown Source)
        at java.util.regex.Pattern$GroupTail.match(Unknown Source)
        at java.util.regex.Pattern$CharProperty.match(Unknown Source)
        at java.util.regex.Pattern$Branch.match(Unknown Source)
        at java.util.regex.Pattern$GroupHead.match(Unknown Source)
        at java.util.regex.Pattern$Loop.match(Unknown Source)
        at java.util.regex.Pattern$GroupTail.match(Unknown Source)
        at java.util.regex.Pattern$CharProperty.match(Unknown Source)
        at java.util.regex.Pattern$Branch.match(Unknown Source)
        at java.util.regex.Pattern$GroupHead.match(Unknown Source)
        at java.util.regex.Pattern$Loop.match(Unknown Source)
        at java.util.regex.Pattern$GroupTail.match(Unknown Source)
        at java.util.regex.Pattern$CharProperty.match(Unknown Source)
        at java.util.regex.Pattern$Branch.match(Unknown Source)
        at java.util.regex.Pattern$GroupHead.match(Unknown Source)
        at java.util.regex.Pattern$Loop.match(Unknown Source)
        at java.util.regex.Pattern$GroupTail.match(Unknown Source)
        at java.util.regex.Pattern$CharProperty.match(Unknown Source)
        at java.util.regex.Pattern$Branch.match(Unknown Source)
        at java.util.regex.Pattern$GroupHead.match(Unknown Source)
        at java.util.regex.Pattern$Loop.match(Unknown Source)
        at java.util.regex.Pattern$GroupTail.match(Unknown Source)
        at java.util.regex.Pattern$CharProperty.match(Unknown Source)
        at java.util.regex.Pattern$Branch.match(Unknown Source)
        at java.util.regex.Pattern$GroupHead.match(Unknown Source)
        at java.util.regex.Pattern$Loop.match(Unknown Source)
        at java.util.regex.Pattern$GroupTail.match(Unknown Source)
        at java.util.regex.Pattern$CharProperty.match(Unknown Source)
        at java.util.regex.Pattern$Branch.match(Unknown Source)
        at java.util.regex.Pattern$GroupHead.match(Unknown Source)
        at java.util.regex.Pattern$Loop.match(Unknown Source)
        at java.util.regex.Pattern$GroupTail.match(Unknown Source)
        at java.util.regex.Pattern$CharProperty.match(Unknown Source)
        at java.util.regex.Pattern$Branch.match(Unknown Source)
        at java.util.regex.Pattern$GroupHead.match(Unknown Source)
        at java.util.regex.Pattern$Loop.match(Unknown Source)
        at java.util.regex.Pattern$GroupTail.match(Unknown Source)
        at java.util.regex.Pattern$CharProperty.match(Unknown Source)
        at java.util.regex.Pattern$Branch.match(Unknown Source)
        at java.util.regex.Pattern$GroupHead.match(Unknown Source)
        at java.util.regex.Pattern$Loop.match(Unknown Source)
        at java.util.regex.Pattern$GroupTail.match(Unknown Source)
        at java.util.regex.Pattern$CharProperty.match(Unknown Source)
        at java.util.regex.Pattern$Branch.match(Unknown Source)
        at java.util.regex.Pattern$GroupHead.match(Unknown Source)
        ..... etc, this goes on for a long time
    

    修改

    这里要求的是小示例文件的内容:

    dbd_label: DBD_ASC(dinkum_binary_data_ascii)file
    encoding_ver: 2
    num_ascii_tags: 14
    all_sensors: 0
    filename: skookum_346-2013-280-0-0
    the8x3_filename: 01440000
    filename_extension: sbd
    filename_label: skookum_346-2013-280-0-0-sbd(01440000)
    mission_name: initial.mi
    fileopen_time: Tue_Oct__8_16:47:26_2013
    sensors_per_cycle: 32
    num_label_lines: 3
    num_segments: 1
    segment_filename_0: skookum_346-2013-280-0-0
    c_ballast_pumped c_de_oil_vol c_heading c_wpt_lat c_wpt_lon m_altitude m_ballast_pumped m_battery_inst m_battpos m_depth m_de_oil_vol m_fin m_gps_lat m_gps_lon m_heading m_lat m_lon m_pitch m_present_secs_into_mission m_present_time m_roll m_water_depth m_water_vx m_water_vy sci_m_present_secs_into_mission sci_m_present_time sci_rinkoii_do sci_rinkoii_temp sci_rinkoii_voltage sci_water_cond sci_water_pressure sci_water_temp 
    cc cc rad lat lon m cc volts in m cc rad lat lon rad lat lon rad sec timestamp rad m m/s m/s sec timestamp % degc volts s/m bar degc 
    4 4 4 8 8 4 4 4 4 4 4 4 8 8 4 8 8 4 4 8 4 4 4 4 4 8 4 4 4 4 4 4 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 130.432 1381250778.43192 NaN NaN NaN NaN 130.432 1381250778.43192 0 0 0 0 0 0 
    260 260 0 0 0 0 0 11.5481 1.39219 0 261.365 0.00298638 69696969 69696969 1.66679 4838.945 -12326.7857 0.020944 9.297 1381250786.32733 0.169297 -1 0 0 NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 14.2859 1381250791.28595 NaN NaN NaN NaN 14.2859 1381250791.28595 0 0 0 0 0 0 
    260 260 0 0 0 0 0 11.6276 1.39219 0 261.279 0 69696969 69696969 1.66679 4838.945 -12326.7857 0.020944 79.339 1381250856.3692 0.169297 -1 0 0 NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 94.015 1381250871.04517 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 98.624 1381250875.65494 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 103.208 1381250880.23843 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN 260 NaN NaN NaN NaN NaN NaN 1.39219 0 261.322 0.00298638 NaN NaN NaN NaN NaN NaN 107.777 1381250884.80746 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 112.35 1381250889.3804 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 116.907 1381250893.93762 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.0863 -12326.4584 NaN NaN NaN NaN 121.466 1381250898.49667 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN 260 NaN NaN NaN NaN NaN NaN 1.39219 0 261.336 0.00298638 4842.0888 -12326.4745 NaN NaN NaN NaN 126.145 1381250903.17502 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.0913 -12326.4907 NaN NaN NaN NaN 131.132 1381250908.1629 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.0938 -12326.5065 NaN NaN NaN NaN 135.803 1381250912.83408 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 140.455 1381250917.4855 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN 260 NaN NaN NaN NaN NaN NaN 1.39219 0 261.379 0 4842.0969 -12326.522 NaN NaN NaN NaN 145.015 1381250922.04526 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0 4842.0994 -12326.5379 NaN 4842.09940010532 -12326.5379000009 NaN 149.682 1381250926.71268 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN 11.6158 NaN NaN NaN 0.00298638 4842.101 -12326.5542 NaN NaN NaN NaN 154.397 1381250931.427 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN 260 NaN NaN NaN NaN NaN NaN 1.39219 0.0497532 261.365 0 4842.1014 -12326.5704 NaN NaN NaN NaN 159.072 1381250936.10275 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.1006 -12326.5865 NaN NaN NaN NaN 166.156 1381250943.18665 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.098 -12326.6195 NaN NaN NaN NaN 170.827 1381250947.85818 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 175.498 1381250952.52893 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN 260 NaN NaN NaN NaN NaN NaN 1.39219 0.0221126 261.394 0 4842.0966 -12326.636 NaN NaN NaN NaN 180.06 1381250957.09055 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.0953 -12326.6518 NaN NaN NaN NaN 184.744 1381250961.77478 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.0936 -12326.6683 NaN NaN NaN NaN 189.419 1381250966.44937 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.092 -12326.6848 NaN NaN NaN NaN 194.087 1381250971.11713 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN 260 NaN NaN NaN NaN NaN NaN 1.39219 0 261.279 0.00298638 4842.0905 -12326.7012 NaN NaN NaN NaN 198.754 1381250975.78452 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.0885 -12326.7177 NaN NaN NaN NaN 203.421 1381250980.45197 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.0869 -12326.7339 NaN NaN NaN NaN 208.095 1381250985.12497 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.0854 -12326.7504 NaN 4842.08540010532 -12326.7504000009 NaN 212.748 1381250989.77887 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN 260 NaN NaN NaN NaN NaN 11.6399 1.39219 0 261.365 0.00298638 4842.085 -12326.7669 NaN NaN NaN NaN 217.401 1381250994.43118 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.0852 -12326.7837 NaN NaN NaN NaN 222.056 1381250999.0863 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.085 -12326.801 NaN NaN NaN NaN 226.714 1381251003.74423 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.0847 -12326.8179 NaN NaN NaN NaN 231.362 1381251008.39227 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN 260 NaN NaN NaN NaN NaN NaN 1.39219 0 261.379 0.00298638 4842.0846 -12326.8345 NaN NaN NaN NaN 236.009 1381251013.03973 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 240.656 1381251017.68646 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.0844 -12326.8511 NaN NaN NaN NaN 245.237 1381251022.267 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN 260 NaN NaN NaN NaN NaN 11.6371 1.39219 0 261.293 0.00298638 4842.0833 -12326.8837 NaN 4842.08330010531 -12326.8837000009 NaN 252.356 1381251029.38681 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0 NaN NaN NaN NaN NaN NaN 288.444 1381251065.47467 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 293.03 1381251070.06015 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 297.596 1381251074.6261 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN 260 NaN NaN NaN NaN NaN NaN 1.39219 0 261.293 0.00298638 NaN NaN NaN NaN NaN NaN 302.162 1381251079.19315 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 306.746 1381251083.776 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 311.314 1381251088.34464 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 315.879 1381251092.90994 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN 260 NaN NaN NaN NaN NaN NaN 1.39219 0 261.408 0.00298638 NaN NaN NaN NaN NaN NaN 320.439 1381251097.4693 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 325.017 1381251102.04776 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 329.595 1381251106.62531 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN 260 NaN NaN NaN NaN NaN NaN 1.39089 0 261.351 0.00298638 NaN NaN NaN NaN NaN NaN 338.31 1381251115.34052 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 342.914 1381251119.94452 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN 11.6454 NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 347.483 1381251124.51331 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 352.047 1381251129.07751 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN 260 NaN NaN NaN NaN NaN NaN 1.39219 0.243238 261.351 0.00298638 NaN NaN NaN NaN NaN NaN 356.607 1381251133.63779 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 361.187 1381251138.21762 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 365.749 1381251142.77979 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 370.315 1381251147.34592 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN 260 NaN NaN NaN NaN NaN NaN 1.39219 0.0773939 261.336 0.00298638 NaN NaN NaN NaN NaN NaN 374.883 1381251151.91348 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 379.485 1381251156.51575 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 384.07 1381251161.10059 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 388.654 1381251165.68399 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN 260 NaN NaN NaN NaN NaN NaN 1.39219 0 261.307 0.00298638 NaN NaN NaN NaN NaN NaN 393.236 1381251170.26596 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 397.829 1381251174.85919 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 402.401 1381251179.43143 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 406.967 1381251183.9971 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
    

2 个答案:

答案 0 :(得分:2)

在你的正则表达式相对于堆栈帧使用情况比正常情况更深入的独特情况下,如果正则表达式使用较小的文件(small.txt)执行预期的操作,那么我会尝试,作为第一个替代方案,增加堆栈帧大小。通过在调用类main方法时传递VM选项-Xss2m,我可以通过将堆栈帧大小增加到2 mb来成功运行程序以获取large.txt文件:

java -Xss2m Test.MainClass

答案 1 :(得分:1)

对于初学者,您不匹配条目之间的空白区域。 你可以尝试一些更保守的东西,以免可能不那么优雅:

  String regex = "^((NaN|-?\\d+(\\.\\d+)?)\\s)+$";

此表达式匹配“NaN”或由空格分隔的一次或多次数值的字符串表示形式(包括\ r \ n)。

是的,围绕正则表达式语法包围一下可能会很乏味。