Java Regex 在大行上抛出 StackOverflow

标签 java regex

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

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

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

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

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 

最佳答案

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

java -Xss2m Test.MainClass

关于Java Regex 在大行上抛出 StackOverflow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41708689/

相关文章:

java - 无法在 Spring MVC Controller 测试中模拟服务类

java - 嵌套类的公共(public)构造函数

mysql - Microsoft SQL Server 相当于 MySQL REGEXP

python - 绝对 url 的正则表达式

python - urllib 和正则表达式替换错误

ruby - 使用 Gsub 转义撇号

java - 设置selenium webdriver的默认执行速度

java - 错误: variable might not have been initialized - How to initialize ArrayList?

java - 如何使用 Java API 更新 MongoDB 中的嵌套实体

regex - 词边界搜索和词尾感叹号