private Matcher ProcessRegex(String RegExpText, boolean CaseSensitiveOption, javax.swing.JTextArea SubjectStringText, javax.swing.table.DefaultTableModel ResultTableModel, String ProcessRegex) {
        Matcher existMatch = null;
        Pattern p = null;
        int i = 0;
        int existMatchStart = 0, existMatchEnd = 0;

        try {
            if (CaseSensitiveOption) {
                p = Pattern.compile(RegExpText);
            } else {
                p = Pattern.compile(RegExpText, Pattern.CASE_INSENSITIVE);
            }

            existMatch = p.matcher(SubjectStringText.getText());

            while (existMatch.find()) {
                existMatchStart = existMatch.start();
                existMatchEnd = existMatch.end();
                ResultTableModel.insertRow(i, new Object[]{existMatchStart, existMatchEnd, SubjectStringText.getLineOfOffset(existMatchStart) + 1, existMatchStart - SubjectStringText.getLineStartOffset(SubjectStringText.getLineOfOffset(existMatchStart)) + 1, existMatch.group(), ProcessRegex});
//                System.out.println(SubjectString.getText(existMatch.start(), existMatch.end()-existMatch.start()));
                i++;
            }
        } catch (Exception e) {
            System.out.println(e);
        }
        if (existMatch != null) {
            existMatch.reset();
        }
        return existMatch;
    }