The Java Developers Almanac 1.4


Order this book from Amazon.

   
Home > List of Packages > java.util.regex  [26 examples] > Lines  [6 examples]

e443. Matching Line Boundaries in a Regular Expression

By default, the beginning-of-line matcher (^) and end-of-line matcher ($) do not match at line boundaries. They match the beginning and end of the entire input sequence. For example, the pattern ^a matches abc but does not match def\nabc. To enable ^ and $ to match line boundaries, the pattern should be compiled with the multiline flag enabled.

It is also possible to enable multiline mode within a pattern using the inline modifier (?m). For example, multiline mode is enabled in the pattern (?m)^a. Multiline mode can be disabled using (?-m).

    CharSequence inputStr = "abc\ndef";
    String patternStr = "abc$";
    
    // Compile with multiline enabled
    Pattern pattern = Pattern.compile(patternStr, Pattern.MULTILINE);
    Matcher matcher = pattern.matcher(inputStr);
    boolean matchFound = matcher.find();    // true
    
    // Use an inline modifier to enable multiline mode
    matchFound = pattern.matches(".*abc$.*", "abc\r\ndef");     // false
    matchFound = pattern.matches("(?m).*abc$.*", "abc\r\ndef"); // true

 Related Examples
e441. Using a Regular Expression to Filter Lines from a Reader
e442. Implementing a FilterReader to Filter Lines Based on a Regular Expression
e444. Matching Across Line Boundaries in a Regular Expression
e445. Reading Lines from a String Using a Regular Expression
e446. Removing Line Termination Characters from a String

See also: Flags    Groups    Paragraphs    Searching and Replacing    Tokenizing   


© 2002 Addison-Wesley.