Java正则表达式在大行上抛出StackOverflow

Java正则表达式在大行上抛出StackOverflow,java,regex,Java,Regex,我正在开发一个小型Java应用程序,使用regex解析.txt文件中的数字数据。我正在查看的文件在我不想要的数字数据之前有许多标题行。一个小问题是,该数值数据可能有一个用NaN表示的空值。其思想是匹配任何没有a-zA-Z的线,除非它是模式NaN。我有一个有效的正则表达式,你可以看到 我试图用Java实现这一点;我已经编写了一个简单的java测试类,它逐行提供文件。它适用于较小的文件,但我有相当大的文件,我也想工作。当我尝试它们时,我遇到了一个StackOverFlowException。我的猜测

我正在开发一个小型Java应用程序,使用regex解析.txt文件中的数字数据。我正在查看的文件在我不想要的数字数据之前有许多标题行。一个小问题是,该数值数据可能有一个用
NaN
表示的空值。其思想是匹配任何没有a-zA-Z的线,除非它是模式
NaN
。我有一个有效的正则表达式,你可以看到

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

我写了一篇文章,想看看我的第一篇文章是否有问题,但是java仍然失败

  • 有没有更有效的方法来实现我的目标?我猜是贪婪导致它溢出
  • 是否有另一个可能没有此问题的正则表达式库
  • 是否有更智能的方法将文件提供给
    .matches
    方法
  • 这是我正在使用的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文件,你可以试试。小的有效,大的无效

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

    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 
    

    在您独特的情况下,正则表达式在堆栈帧使用方面比正常情况下更深入,如果正则表达式使用较小的文件(small.txt)实现了预期的效果,那么作为第一种选择,我将尝试增加堆栈帧的大小。调用类main方法时,我通过传递VM选项:
    -Xss2m
    将堆栈帧大小增加到2MB,从而成功地运行了大型.txt文件的程序:


    java-Xss2m Test.MainClass

    对于初学者,您没有匹配条目之间的空格。 你可以尝试更保守的方式,以免不那么优雅:

      String regex = "^((NaN|-?\\d+(\\.\\d+)?)\\s)+$";
    
    此表达式匹配一个或多个由空格分隔的数值的“NaN”或字符串表示形式(包括\r\n)


    是的,对正则表达式语法的理解可能会很乏味。

    嵌套的可选量词总是会引起问题。尝试(请注意,如果字符串末尾不能出现
    NaN
    ,则必须使用第二个
    [^a-zA-Z\r\n]
    之后的
    +
    )。您能否向我们展示示例文本文件的外观,而不是链接?我无法到达链接,不知道如何到达。我将粘贴小的,但我认为大的将使我超过posit的字符限制。看起来您可以从文件中读取以空格分隔的条目,并将其解析为双值。为什么要使用正则表达式?你的正则表达式应该处理单行吗?如果是,并且您正在通过
    BufferedReader#readLine
    读取它们,那么您可以跳过处理
    \r
    \n
    ,因为它们永远不会出现在单行中。您还可以发布匹配方法预期结果的示例(何时为真,何时为假)?“第二步,您将希望双重转义,例如\r或\n”毫无意义,因为
    \r
    \\r
    将被正则表达式引擎以相同的方式处理。是的,确实如此,我的错,已编辑,如前所述,把头缠在正则表达式上可能会很乏味。:)