## org.springframework.util
Interface PathMatcher

All Known Implementing Classes:
  AntPathMatcher

    public interface PathMatcher

Strategy interface for `String`-based path matching.

Used by `PathMatchingResourcePatternResolver`, `AbstractUrlHandlerMapping`, `PropertiesMethodNameResolver`, and `WebContentInterceptor`.

The default implementation is `AntPathMatcher`, supporting the Ant-style pattern syntax.

Since:
  1.2
Author:
  Juergen Hoeller
See Also:
  `AntPathMatcher`

Method Summary
`String` `combine(String pattern1, String pattern2)` Combines two patterns into a new pattern that is returned.
`String` `extractPathWithinPattern(String pattern, String path)` Given a pattern and a full path, determine the pattern-mapped part.
`Map<String,String>` `extractUriTemplateVariables(String pattern, String path)` Given a pattern and a full path, extract the URI template variables.
`Comparator<String>` `getPatternComparator(String path)` Given a full path, returns a `Comparator` suitable for sorting patterns in order of explicitness for that path.
`boolean` `isPattern(String path)` Does the given `path` represent a pattern that can be matched by an implementation of this interface?
`boolean` `match(String pattern, String path)` Match the given `path` against the given `pattern`, according to this PathMatcher's matching strategy.
`boolean` `matchStart(String pattern, String path)` Match the given `path` against the corresponding part of the given `pattern`, according to this PathMatcher's matching strategy.

Method Detail

### isPattern

    boolean isPattern(String path)

  Does the given `path` represent a pattern that can be matched by an implementation of this interface?

  If the return value is `false`, then the `match(java.lang.String, java.lang.String)` method does not have to be used because direct equality comparisons on the static path Strings will lead to the same result.

  Parameters:
    `path` - the path String to check
  Returns:
    `true` if the given `path` represents a pattern

### match

    boolean match(String pattern,
                  String path)

  Match the given `path` against the given `pattern`, according to this PathMatcher's matching strategy.

  Parameters:
    `pattern` - the pattern to match against
    `path` - the path String to test
  Returns:
    `true` if the supplied `path` matched, `false` if it didn't

### matchStart

    boolean matchStart(String pattern,
                       String path)

  Match the given `path` against the corresponding part of the given `pattern`, according to this PathMatcher's matching strategy.

  Determines whether the pattern at least matches as far as the given base path goes, assuming that a full path may then match as well.

  Parameters:
    `pattern` - the pattern to match against
    `path` - the path String to test
  Returns:
    `true` if the supplied `path` matched, `false` if it didn't

### extractPathWithinPattern

    String extractPathWithinPattern(String pattern,
                                    String path)

  Given a pattern and a full path, determine the pattern-mapped part.

  This method is supposed to find out which part of the path is matched dynamically through an actual pattern, that is, it strips off a statically defined leading path from the given full path, returning only the actually pattern-matched part of the path.

  For example: For "myroot/*.html" as pattern and "myroot/myfile.html" as full path, this method should return "myfile.html". The detailed determination rules are specified to this PathMatcher's matching strategy.

  A simple implementation may return the given full path as-is in case of an actual pattern, and the empty String in case of the pattern not containing any dynamic parts (i.e. the `pattern` parameter being a static path that wouldn't qualify as an actual `pattern`). A sophisticated implementation will differentiate between the static parts and the dynamic parts of the given path pattern.

  Parameters:
    `pattern` - the path pattern
    `path` - the full path to introspect
  Returns:
    the pattern-mapped part of the given `path` (never `null`)

### extractUriTemplateVariables

    Map<String,String> extractUriTemplateVariables(String pattern,
                                                   String path)

  Given a pattern and a full path, extract the URI template variables. URI template variables are expressed through curly brackets ('{' and '}').

  For example: For pattern "/hotels/{hotel}" and path "/hotels/1", this method will return a map containing "hotel"->"1".

  Parameters:
    `pattern` - the path pattern, possibly containing URI templates
    `path` - the full path to extract template variables from
  Returns:
    a map, containing variable names as keys; variables values as values

### getPatternComparator

    Comparator<String> getPatternComparator(String path)

  Given a full path, returns a `Comparator` suitable for sorting patterns in order of explicitness for that path.

  The full algorithm used depends on the underlying implementation, but generally, the returned `Comparator` will sort a list so that more specific patterns come before generic patterns.

  Parameters:
    `path` - the full path to use for comparison
  Returns:
    a comparator capable of sorting patterns in order of explicitness

### combine

    String combine(String pattern1,
                   String pattern2)

  Combines two patterns into a new pattern that is returned.

  The full algorithm used for combining the two pattern depends on the underlying implementation.

  Parameters:
    `pattern1` - the first pattern
    `pattern2` - the second pattern
  Returns:
    the combination of the two patterns
  Throws:
    `IllegalArgumentException` - when the two patterns cannot be combined