Merge GNU Classpath 0.99 into libjava.
From-SVN: r185741
This commit is contained in:
@@ -169,6 +169,12 @@ public final class Matcher implements MatchResult
|
||||
if (match != null)
|
||||
{
|
||||
int endIndex = match.getEndIndex();
|
||||
// Is the match within input limits?
|
||||
if (endIndex > input.length())
|
||||
{
|
||||
match = null;
|
||||
return false;
|
||||
}
|
||||
// Are we stuck at the same position?
|
||||
if (!first && endIndex == position)
|
||||
{
|
||||
@@ -608,4 +614,27 @@ public final class Matcher implements MatchResult
|
||||
return snapshot;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a literalized string of s where characters {@code $} and {@code
|
||||
* \\} are escaped.
|
||||
*
|
||||
* @param s the string to literalize.
|
||||
* @return the literalized string.
|
||||
* @since 1.5
|
||||
*/
|
||||
public static String quoteReplacement(String s)
|
||||
{
|
||||
if (s == null)
|
||||
throw new NullPointerException();
|
||||
CPStringBuilder sb = new CPStringBuilder();
|
||||
for (int i = 0; i < s.length(); i++)
|
||||
{
|
||||
char ch = s.charAt(i);
|
||||
if (ch == '$' || ch == '\\')
|
||||
sb.append('\\');
|
||||
sb.append(ch);
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/* Pattern.java -- Compiled regular expression ready to be applied.
|
||||
Copyright (C) 2002, 2004, 2005, 2007 Free Software Foundation, Inc.
|
||||
Copyright (C) 2002, 2004, 2005, 2007, 2010
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
@@ -37,6 +38,8 @@ exception statement from your version. */
|
||||
|
||||
package java.util.regex;
|
||||
|
||||
import gnu.java.lang.CPStringBuilder;
|
||||
|
||||
import gnu.java.util.regex.RE;
|
||||
import gnu.java.util.regex.REException;
|
||||
import gnu.java.util.regex.RESyntax;
|
||||
@@ -259,6 +262,41 @@ public final class Pattern implements Serializable
|
||||
return regex;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a literal pattern for the specified String.
|
||||
*
|
||||
* @param String to return a literal pattern for.
|
||||
* @return a literal pattern for the specified String.
|
||||
* @exception NullPointerException if str is null.
|
||||
* @since 1.5
|
||||
*/
|
||||
public static String quote(String str)
|
||||
{
|
||||
int eInd = str.indexOf("\\E");
|
||||
if (eInd < 0)
|
||||
{
|
||||
// No need to handle backslashes.
|
||||
return "\\Q" + str + "\\E";
|
||||
}
|
||||
|
||||
CPStringBuilder sb = new CPStringBuilder(str.length() + 16);
|
||||
sb.append("\\Q"); // start quote
|
||||
|
||||
int pos = 0;
|
||||
do
|
||||
{
|
||||
// A backslash is quoted by another backslash;
|
||||
// 'E' is not needed to be quoted.
|
||||
sb.append(str.substring(pos, eInd))
|
||||
.append("\\E" + "\\\\" + "E" + "\\Q");
|
||||
pos = eInd + 2;
|
||||
} while ((eInd = str.indexOf("\\E", pos)) >= 0);
|
||||
|
||||
sb.append(str.substring(pos, str.length()))
|
||||
.append("\\E"); // end quote
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the regular expression used to construct this object.
|
||||
* @specnote Prior to JDK 1.5 this method had a different behavior
|
||||
|
||||
Reference in New Issue
Block a user