Java/Regular Expressions/Replace
Содержание
Append Replacement Method
<source lang="java">
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main {
public static void main(String args[]) { Pattern p = Pattern.rupile("test"); StringBuffer sb = new StringBuffer(); String candidateString = "This is a test."; String replacement = "Test"; Matcher matcher = p.matcher(candidateString); matcher.find(); matcher.appendReplacement(sb, replacement); }
}
</source>
Escaping Special Characters in a Pattern
<source lang="java">
import java.util.regex.Pattern; public class Main {
public static void main(String[] argv) throws Exception { String patternStr = "i.e."; boolean matchFound = Pattern.matches(patternStr, "i.e."); matchFound = Pattern.matches(patternStr, "ibex"); // Quote the pattern; i.e. surround with \Q and \E matchFound = Pattern.matches("\\Q" + patternStr + "\\E", "i.e."); matchFound = Pattern.matches("\\Q" + patternStr + "\\E", "ibex"); // Escape the pattern patternStr = escapeRE(patternStr); matchFound = Pattern.matches(patternStr, "i.e."); matchFound = Pattern.matches(patternStr, "ibex"); // Returns a pattern where all punctuation characters are escaped. } public static String escapeRE(String str) { Pattern escaper = Pattern.rupile("([^a-zA-z0-9])"); return escaper.matcher(str).replaceAll("\\\\$1"); }
}
</source>
REGEX = "a*b"
<source lang="java">
/*
* Copyright (c) 1995 - 2008 Sun Microsystems, Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * - Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * - Neither the name of Sun Microsystems nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
import java.util.regex.Matcher; import java.util.regex.Pattern; public class ReplaceDemo2 {
private static String REGEX = "a*b"; private static String INPUT = "aabfooaabfooabfoob"; private static String REPLACE = "-"; public static void main(String[] args) { Pattern p = Pattern.rupile(REGEX); Matcher m = p.matcher(INPUT); // get a matcher object INPUT = m.replaceAll(REPLACE); System.out.println(INPUT); }
}
</source>
Removing Line Termination Characters from a String
<source lang="java">
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main {
public static CharSequence removeLineTerminators(CharSequence inputStr) { String patternStr = "(?m)$^|[\\r\\n]+\\z"; String replaceStr = " "; Pattern pattern = Pattern.rupile(patternStr); Matcher matcher = pattern.matcher(inputStr); return matcher.replaceAll(replaceStr); }
}
</source>
ReplaceAll Method from Matcher
<source lang="java">
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main {
public static void main(String args[]) { Pattern p = Pattern.rupile("(i|I)ce"); String candidateString = "ice Ice Ice."; Matcher matcher = p.matcher(candidateString); String tmp = matcher.replaceAll("Java"); System.out.println(tmp); }
}
</source>
replaceFirst Method from Matcher
<source lang="java">
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main {
public static void main(String args[]) { Pattern p = Pattern.rupile("(i|I)ce"); String candidateString = "ice Ice Ice."; Matcher matcher = p.matcher(candidateString); String tmp = matcher.replaceFirst("Java"); System.out.println(tmp); }
}
</source>
Working with Back References
<source lang="java">
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main {
public static void main(String args[]) { String regex = "(\\w)(\\d)(\\w+)"; Pattern pattern = Pattern.rupile(regex); String candidate = "X99 "; Matcher matcher = pattern.matcher(candidate); String tmp = matcher.replaceAll("$33"); System.out.println("REPLACEMENT: " + tmp); System.out.println("ORIGINAL: " + candidate); }
}
</source>