DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=4137>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=4137

regexp match gets different results on different platforms

           Summary: regexp match gets different results on different
                    platforms
           Product: Regexp
           Version: unspecified
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Other
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


The following code, which uses the regexp1.2 package, gets different results when 
running on windows NT and linux, both running the javasoft jdk 1.3.  The problem seems 
to be with the handling of \n in multiline matches.





See the comment at the beginning of the class for some more detail.





--- BadRE.java ---





import org.apache.regexp.*;





// The following class defines a regular expression and attempts to


//   match a text string with it.  The regular expression is trying to


//   match the literal "window.location.href=" at the beginning of a


//   line, following any number of space characters.


//


// The results are different on Windows NT and Linux.  On linux


//   running sun jdk1.3, it matches.  On Windows NT Workstation running


//   sun jdk1.3, it doesn't match.


//


// If the \n is removed from the beginning of the input string then it


//   matches on windows and linux.


// If bol (beginning-of-line) is changed from "^[ \t]*" to "^[ \t\n]*" then


//   it matches on windows and linux.


// If bol is changed to "^\n[ \t]*" then it matches on windows and linux.


//





public class BadRE {


    public static RE makeRE() throws RESyntaxException {


        String bol = "^[ \t]*";


        String regexp = bol + "window.location.href=";


        RE matchRE = new RE(regexp, RE.MATCH_MULTILINE | RE.MATCH_CASEINDEPENDENT);


        return matchRE;


    }





    public static void test() throws RESyntaxException {


        String input = "\nwindow.location.href=";


        RE re = makeRE();


        if (re.match(input)) {


            System.out.println("match: " + re.getParen(0));


        }


        else {


            System.out.println("no match");


        }


    }





    public static void main(String [] args) throws RESyntaxException {


        test();


    }


}

Reply via email to