1. /**
  2. * Copyright: Copyright (c) 2004-2004
  3. * Company: JavaResearch(http://www.javaresearch.org)
  4. * 创建日期:2004-11-12
  5. * 最后更新日期:2004-11-12
  6. * @author Cherami
  7. */
  8. package org.jr.util;
  9. import java.util.regex.Matcher;
  10. import java.util.regex.Pattern;
  11. /**
  12. * 正则表达式相关的工具类。
  13. * @since 0.6
  14. */
  15. public class RegexUtil {
  16. private static Pattern pattern=Pattern.compile("([\\p{Punct}&&[^\\$\\\\]])");
  17. /**
  18. * 将字符串中正则表达式特殊字符转换为普通字符。
  19. * @param original 原字符串
  20. * @return 转换后的字符串
  21. */
  22. public static String escapeRegex(String original) {
  23. Matcher matcher=pattern.matcher(escapeDollarBackslash(original));
  24. StringBuffer buffer=new StringBuffer();
  25. while (matcher.find()) {
  26. String group=matcher.group();
  27. matcher.appendReplacement(buffer, "\\\\"+group);
  28. }
  29. matcher.appendTail(buffer);
  30. return buffer.toString();
  31. }
  32. /**
  33. * 将字符串中的转义字符和美元符转换为普通字符
  34. * @param original 原字符串
  35. * @return 转换后的字符串
  36. */
  37. public static String escapeDollarBackslash(String original) {
  38. StringBuffer buffer=new StringBuffer(original.length());
  39. for (int i=0;i<original.length();i++) {
  40. char c=original.charAt(i);
  41. if (c=='\\'||c=='$') {
  42. buffer.append("\\").append(c);
  43. } else{
  44. buffer.append(c);
  45. }
  46. }
  47. return buffer.toString();
  48. }
  49. }