Advertisement
krasi1105

Regular Extensions

Oct 23rd, 2017
230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.38 KB | None | 0 0
  1. import java.util.HashSet;
  2. import java.util.Scanner;
  3. import java.util.regex.Matcher;
  4. import java.util.regex.Pattern;
  5.  
  6. public class myClass {
  7.     public static void main(String[] args) {
  8.         Scanner s = new Scanner(System.in);
  9.  
  10.         String text = s.nextLine();
  11.         String pattern;
  12.         while (!(pattern = s.nextLine()).equals("Print")) {
  13.             pattern = formatPattern(pattern);
  14.  
  15.             Pattern p = Pattern.compile(pattern);
  16.             Matcher m = p.matcher(text);
  17.             while (m.find()) {
  18.                 String reversed = new StringBuilder(m.group(0)).reverse().toString();
  19.                 text = text.replace(m.group(0), reversed);
  20.             }
  21.         }
  22.         System.out.println(text);
  23.     }
  24.  
  25.     private static String formatPattern(String pattern) {
  26.         StringBuilder sb = new StringBuilder();
  27.         HashSet<Character> toEscape = new HashSet<>();
  28.         char[] toEscapeArr = {'.', '^', '$', '*', '+', '?', '(', ')', '[', '{', '\\', '|'};
  29.         for (char c : toEscapeArr) {
  30.             toEscape.add(c);
  31.         }
  32.         for (int i = 0; i < pattern.length(); i++) {
  33.             char c = pattern.charAt(i);
  34.             if (c == '%') {
  35.                 sb.append("\\S*");
  36.             } else if (toEscape.contains(c)) {
  37.                 sb.append('\\').append(c);
  38.             } else {
  39.                 sb.append(c);
  40.             }
  41.         }
  42.         return sb.toString();
  43.     }
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement