Java/Regular Expressions/Replace

Материал из Java эксперт
Перейти к: навигация, поиск

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>