importJava "java.util.regex.Matcher" where
data Matcher
+
+ """
+ Attempts to match the entire region against the pattern.
+ """
matches :: Matcher -> <Proc> Boolean
+ """
+ Returns the input subsequence matched by the previous match.
+ """
group :: Matcher -> <Proc> String
-
+
+ """
+ Returns the number of capturing groups in this matcher's pattern.
+ """
+ groupCount :: Matcher -> <Proc> Integer
+
+ """
+ Returns the input subsequence captured by the given group during the previous match operation.
+ """
+ @JavaName group
+ groupNr :: Matcher -> Integer -> <Proc> Maybe String
+
+ """
+ Returns the input subsequence captured by the given named group during the previous match operation.
+ """
+ @JavaName group
+ groupNm :: Matcher -> String -> <Proc> Maybe String
+
+ """
+ Attempts to find the next subsequence of the input sequence that matches the pattern.
+ """
@JavaName find
matcherFind :: Matcher -> <Proc> Boolean
@JavaName toString
freezeStringBuffer :: StringBuffer -> <Proc> String
+import "IterN"
+
"""
-@replaceAll pattern replacement text@ replaces all matches of @pattern@ in the @text@
-by @replacement@.
+Get parts matched by each group in the pattern, if a match is found.
+"""
+matchGroups :: Pattern -> String -> Maybe [Maybe String]
+matchGroups p s = runProc $ if matches m then Just $ mapN (\i -> groupNr m (i+1)) (groupCount m) else Nothing where
+ m = matcher p s
+
+"""
+`replaceAll pattern replacement text` replaces all matches of `pattern` in the `text`
+by `replacement`.
"""
replaceAll :: String -> String -> String -> String
replaceAll pattern replacement text =
replaceAll_ (matcher (compile pattern) text) replacement
"""
-@replaceFirst pattern replacement text@ replaces the first match of @pattern@ in the @text@
-by @replacement@.
+`replaceFirst pattern replacement text` replaces the first match of `pattern` in the `text`
+by `replacement`.
"""
replaceFirst :: String -> String -> String -> String
replaceFirst pattern replacement text =
replaceFirst_ (matcher (compile pattern) text) replacement
"""
-@substituteAll pattern f text@ replaces all matches of @pattern@ in the @text@
-by the string returned by @f@ given the matched region of the string as a parameter.
+`substituteAll pattern f text` replaces all matches of `pattern` in the `text`
+by the string returned by `f` given the matched region of the string as a parameter.
"""
substituteAll :: String -> (String -> String) -> String -> String
substituteAll pattern f text = runProc do
"""
-@substituteFirst pattern f text@ replaces the first match of @pattern@ in the @text@
-by the string returned by @f@ given the matched region of the string as a parameter.
+`substituteFirst pattern f text` replaces the first match of `pattern` in the `text`
+by the string returned by `f` given the matched region of the string as a parameter.
"""
substituteFirst :: String -> (String -> String) -> String -> String
substituteFirst pattern f text = runProc do
appendTail m buf
freezeStringBuffer buf
else text
-
\ No newline at end of file
+
+
+importJava "java.lang.String" where
+
+ """
+ `substring string beginIndex` Returns a string that is a substring of given string. The substring begins with the character at the specified index and extends to the end of the string.
+ """
+ @JavaName substring
+ substring :: String -> Integer -> String
+
+ """
+ `substringl string beginIndex endIndex` Returns a string that is a substring of given string. The substring begins at the specified `beginIndex` and extends to the character at index `endIndex - 1`. Thus the length of the substring is endIndex-beginIndex.
+ """
+ @JavaName substring
+ substringl :: String -> Integer -> Integer -> String
\ No newline at end of file