PatternMatcher

Run Settings
LanguageJava
Language Version
Run Command
import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.List; import java.util.ArrayList; import java.util.Map; import java.util.HashMap; class Main { private static final Pattern REGEX_GROUP = Pattern.compile("<(?<group>[^>]+)>"); private static final String[] URL_REGEXES = { "/articles/(?<articlId>[0-9]+)(?:$|/)", "/comments/(?<commentId>[0-9]+)(?:$|/)" }; private static final Map<Pattern,Replace> PATTERNS = new HashMap(); private static final class Replace { String group; String newValue; Replace(String group, String newValue) { this.group = group; this.newValue = newValue; } } static { System.out.println(REGEX_GROUP); for (String urlRegex : URL_REGEXES) { Matcher m = REGEX_GROUP.matcher(urlRegex); if (m.find()) { Pattern p = Pattern.compile(urlRegex); String group = m.group("group"); String newValue = "{" + group + "}"; PATTERNS.put(p, new Replace(group, newValue)); } } } public static void main(String[] args) { String[] data = {"/articles/123","/comments/234", "/articles/345/comments/456", "/articles/123-guid" }; for (String s : data) { System.out.print(s + " -> "); Matcher m = null; for (Pattern p: PATTERNS.keySet()) { m = p.matcher(s); if (m.find()) { Replace r = PATTERNS.get(p); s = s.replace(m.group(r.group), r.newValue); } } System.out.println(" -> " + s); } } }
Editor Settings
Theme
Key bindings
Full width
Lines