import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "\n"
+ "(?:\n"
+ "(?<ctrl_code>\n"
+ " # ^[[ # ^[ | \\003\n"
+ " ([\\^][\\[]{2})\n"
+ "| # [Ctrl Key] >>> '\\e' | '^[' | '\\u001B'\n"
+ " (?<esc>\n"
+ " [\\^][\\[]\n"
+ " |\n"
+ " [\\\\][e]\n"
+ " |\n"
+ " [\\\\](?:(?i)u001b(?-i))\n"
+ " )\n"
+ "|\n"
+ " # ^\n"
+ " ([\\^][A-Z@])|([\\^])\n"
+ "|\n"
+ " # [Meta Key] \\M-\n"
+ " ([\\\\]M-)\n"
+ "|\n"
+ " # [^C] ^C | \\003\n"
+ " ([\\^]C|[\\\\]0{2}3)\n"
+ ")\n"
+ ")+";
final String string = "# Ctrl\n"
+ "bindkey '\\e' zle_function\n"
+ "bindkey '\\E' zle_function\n"
+ "bindkey '^[' zle_function\n"
+ "bindkey '\\U001b' zle_function\n"
+ "bindkey '\\U001B' zle_function\n"
+ "bindkey '\\u001b' zle_function\n"
+ "bindkey '\\u001B' zle_function\n\n"
+ "# Function keys\n"
+ "^[OS ^[[34~ ^[[24;6~ ^[[21;2~ ^[[18~ ^[[14^\n"
+ "^[OR ^[[34^ ^[[24;5~ ^[[21~ ^[[18^ ^[[13;6~\n"
+ "^[OQ ^[[33~ ^[[24;2~ ^[[21^ ^[[17;6~ ^[[13;5~\n"
+ "^[OP ^[[33^ ^[[24$ ^[[20;6~ ^[[17;5~ ^[[13;2~\n"
+ "^[O6S ^[[32~ ^[[24~ ^[[20;5~ ^[[17;2~ ^[[13~\n"
+ "^[O6R ^[[32^ ^[[24^ ^[[20;2~ ^[[17~ ^[[13^\n"
+ "^[O6Q ^[[31~ ^[[24@ ^[[20~ ^[[17^ ^[[12;6~\n"
+ "^[O6P ^[[31^ ^[[23;6~ ^[[20^ ^[[15;6~ ^[[12;5~\n"
+ "^[O5S ^[[29~ ^[[23;5~ ^[[19;6~ ^[[15;5~ ^[[12;2~\n"
+ "^[O5R ^[[29^ ^[[23;2~ ^[[19;5~ ^[[15;2~ ^[[12~\n"
+ "^[O5Q ^[[28~ ^[[23$ ^[[19;2~ ^[[15~ ^[[12^\n"
+ "^[O5P ^[[28^ ^[[23~ ^[[19~ ^[[15^ ^[[11;6~\n"
+ "^[O2S ^[[26~ ^[[23^ ^[[19^ ^[[14;6~ ^[[11;5~\n"
+ "^[O2R ^[[26^ ^[[23@ ^[[18;6~ ^[[14;5~ ^[[11;2~\n"
+ "^[O2Q ^[[25~ ^[[21;6~ ^[[18;5~ ^[[14;2~ ^[[11~\n"
+ "^[O2P ^[[25^ ^[[21;5~ ^[[18;2~ ^[[14~ ^[[11^\n\n\n\n"
+ "# bindkey -L | clip\n"
+ "bindkey \"^[\\$\" spell-word\n"
+ "bindkey \"^[0\" digit-argument\n"
+ "bindkey \"^[[1;10A\" beginning-of-buffer-or-history\n"
+ "bindkey '^[[1;10A' beginning-of-buffer-or-history\n"
+ "bindkey \"^[[1;10B\" end-of-buffer-or-history\n"
+ "bindkey '^[[1;10B' end-of-buffer-or-history\n"
+ "bindkey \"^[[1;3C\" forward-word\n"
+ "bindkey '^[[1;3C' forward-word\n"
+ "bindkey \"^[[1;3D\" backward-word\n"
+ "bindkey '^[[1;3D' backward-word\n"
+ "bindkey \"^[[1;5C\" forward-word\n"
+ "bindkey \"^[[1;5D\" backward-word\n"
+ "bindkey \"^[[1;6C\" end-of-line\n"
+ "bindkey '^[[1;6C' end-of-line\n"
+ "bindkey \"^[[1;6D\" beginning-of-line\n"
+ "bindkey '^[[1;6D' beginning-of-line\n"
+ "bindkey \"^[[1;9C\" forward-word\n"
+ "bindkey '^[[1;9C' forward-word\n"
+ "bindkey \"^[[1;9D\" backward-word\n"
+ "bindkey '^[[1;9D' backward-word\n"
+ "bindkey \"^[1\" digit-argument\n"
+ "bindkey \"^[[200~\" bracketed-paste\n"
+ "bindkey \"^[2\" digit-argument\n"
+ "bindkey \"^[[3~\" delete-char\n"
+ "bindkey \"^[3\" digit-argument\n"
+ "bindkey \"^[4\" digit-argument\n"
+ "bindkey \"^[5\" digit-argument\n"
+ "bindkey \"^[[5~\" up-line-or-history\n"
+ "bindkey \"^[6\" digit-argument\n"
+ "bindkey \"^[[6~\" down-line-or-history\n"
+ "bindkey \"^[7\" digit-argument\n"
+ "bindkey \"^[8\" digit-argument\n"
+ "bindkey \"^[9\" digit-argument\n"
+ "bindkey \"^[a\" accept-and-hold\n"
+ "bindkey \"^[A\" accept-and-hold\n"
+ "bindkey \"^A\" beginning-of-line\n"
+ "bindkey \"^[[A\" history-beginning-search-backward\n"
+ "bindkey \"^?\" backward-delete-char\n"
+ "bindkey \"^[^?\" backward-kill-word\n"
+ "bindkey \"^[~\" _bash_complete-word\n"
+ "bindkey \"^[b\" backward-word\n"
+ "bindkey \"^[B\" backward-word\n"
+ "bindkey \"^[[B\" down-line-or-history\n"
+ "bindkey \"^[<\" beginning-of-buffer-or-history\n"
+ "bindkey \"^B\" zhistory\n"
+ "bindkey \"^[c\" capitalize-word\n"
+ "bindkey \"^[[C\" forward-char\n"
+ "bindkey \"^[}\" _complete_debug\n"
+ "bindkey \"^[]\" _complete_help\n"
+ "bindkey \"^[^]\" _complete_tag\n"
+ "bindkey \"^[^_\" copy-prev-word\n"
+ "bindkey \"^[^[\" cycle-completion-positions\n"
+ "bindkey \"^[C\" zle-debug-view\n"
+ "bindkey \"^[[D\" backward-char\n"
+ "bindkey \"^D\" delete-char-or-list\n"
+ "bindkey \"^[/\" describe-key-briefly\n"
+ "bindkey '^[/' describe-key-briefly\n"
+ "bindkey \"^[[\" describe-key-more\n"
+ "bindkey \"^[d\" kill-word\n"
+ "bindkey \"^[D\" kill-word\n"
+ "bindkey \"^[^D\" list-choices\n"
+ "bindkey \"^[{\" dump-zstyle-context\n"
+ "bindkey \"^[^E\" edit-command-line\n"
+ "bindkey '^[^E' edit-command-line\n"
+ "bindkey \"^E\" end-of-line\n"
+ "bindkey \"^[>\" end-of-buffer-or-history\n"
+ "bindkey \"^[E\" open-buffer-in-editor\n"
+ "bindkey \"^[ \" expand-global-alias\n"
+ "bindkey \"^[!\" expand-history\n"
+ "bindkey \"^F\" forward-char\n"
+ "bindkey \"^[f\" forward-word\n"
+ "bindkey \"^[F\" forward-word\n"
+ "bindkey \"^[g\" get-line\n"
+ "bindkey '^[g' get-line\n"
+ "bindkey \"^[G\" push-input\n"
+ "bindkey '^[G' push-input\n"
+ "bindkey \"^[^G\" send-break\n"
+ "bindkey \"^G\" send-break\n"
+ "bindkey \"^H\" backward-delete-char\n"
+ "bindkey \"^[^H\" backward-kill-word\n"
+ "bindkey \"^[,\" _history-complete-newer\n"
+ "bindkey \"^[h\" zew-history-complete-word\n"
+ "bindkey \"^[H\" zew-history-complete-word-backwards\n"
+ "bindkey \"^I\" expand-or-complete\n"
+ "bindkey \"^[.\" insert-last-word\n"
+ "bindkey \"^[_\" insert-last-word\n"
+ "bindkey \"^[^I\" self-insert-unmeta\n"
+ "bindkey \"^[^J\" self-insert-unmeta\n"
+ "bindkey \"^J\" self-insert-unmeta\n"
+ "bindkey \"^K\" kill-line\n"
+ "bindkey \"^[^L\" clear-screen\n"
+ "bindkey \"^L\" clear-screen\n"
+ "bindkey \"^[L\" down-case-word\n"
+ "bindkey \"^M\" accept-line\n"
+ "bindkey \" \" magic-space\n"
+ "bindkey \"^[man\" man-command-line\n"
+ "bindkey \"\\M-B\\M-^V\" pasteWSL\n"
+ "bindkey \"\\M-B\\M-^V\" pasteWSL\n"
+ "bindkey \"\\M-B\" self-insert\n"
+ "bindkey \"^[m\" copy-earlier-word\n"
+ "bindkey \"^[M\" copy-prev-shell-word\n"
+ "bindkey \"^[^M\" self-insert-unmeta\n"
+ "bindkey \"^N\" down-line-or-history\n"
+ "bindkey \"^[-\" neg-argument\n"
+ "bindkey \"^[n\" history-search-forward\n"
+ "bindkey \"^[N\" history-search-forward\n"
+ "bindkey \"^O\" accept-line-and-down-history\n"
+ "bindkey \"^[OA\" up-line-or-beginning-search\n"
+ "bindkey \"^[OB\" down-line-or-beginning-search\n"
+ "bindkey \"^[OC\" forward-char\n"
+ "bindkey \"^[OD\" backward-char\n"
+ "bindkey \"^[OF\" end-of-line\n"
+ "bindkey \"^[OH\" beginning-of-line\n"
+ "bindkey \"^O^Z\" zui-demo-various\n"
+ "bindkey \"^[p\" history-search-backward\n"
+ "bindkey \"^[P\" history-search-backward\n"
+ "bindkey \"^P\" up-line-or-history\n"
+ "bindkey \"^[q\" push-line\n"
+ "bindkey \"^[Q\" push-line\n"
+ "bindkey \"^Q\" push-line\n"
+ "bindkey \"^['\" quote-line\n"
+ "bindkey \"^[\\\"\" quote-region\n"
+ "bindkey -R \"\\M-C\"-\"\\M-^?\" self-insert\n"
+ "bindkey -R \"\\M-^@\"-\"\\M-A\" self-insert\n"
+ "bindkey -R \"!\"-\"~\" self-insert\n"
+ "bindkey \"^[r\" zew-rotate-shell-words\n"
+ "bindkey \"^[R\" zew-rotate-shell-words-backwards\n"
+ "bindkey \"^R\" znt-history-widget\n"
+ "bindkey \"^@\" set-mark-command\n"
+ "bindkey \"^S\" history-incremental-search-forward\n"
+ "bindkey -s \"^[l\" \"ls^J\"\n"
+ "bindkey \"^[s\" spell-word\n"
+ "bindkey \"^[S\" spell-word\n"
+ "bindkey \"^[T\" insert-indented-line\n"
+ "bindkey \"^T\" zca-widget\n"
+ "bindkey \"^[t\" zew-transpose-shell-words\n"
+ "bindkey \"^U\" kill-whole-line\n"
+ "bindkey \"^_\" undo\n"
+ "bindkey \"^[u\" up-case-word\n"
+ "bindkey \"^[U\" up-case-word\n"
+ "bindkey \"^[|\" vi-goto-column\n"
+ "bindkey \"^V\" quoted-insert\n"
+ "bindkey \"^W\" backward-kill-word\n"
+ "bindkey \"^[W\" copy-region-as-kill\n"
+ "bindkey \"^[?\" which-command\n"
+ "bindkey \"^[w\" zew-backward-kill-shell-word\n"
+ "bindkey \"^Xa\" _expand_alias\n"
+ "bindkey \"^X~\" _bash_list-choices\n"
+ "bindkey \"^X^B\" vi-match-bracket\n"
+ "bindkey \"^XC\" _correct_filename\n"
+ "bindkey \"^Xc\" _correct_word\n"
+ "bindkey \"^X?\" _complete_debug\n"
+ "bindkey \"^Xd\" _list_expansions\n"
+ "bindkey \"^X^E\" edit-command-line\n"
+ "bindkey \"^Xe\" _expand_word\n"
+ "bindkey \"^[x\" execute-named-cmd\n"
+ "bindkey \"^X*\" expand-word\n"
+ "bindkey \"^X^F\" vi-find-next-char\n"
+ "bindkey \"^Xg\" list-expand\n"
+ "bindkey \"^XG\" list-expand\n"
+ "bindkey \"^Xh\" _complete_help\n"
+ "bindkey \"^X^J\" vi-join\n"
+ "bindkey \"^X^K\" kill-buffer\n"
+ "bindkey \"^Xm\" _most_recent_file\n"
+ "bindkey \"^X^N\" infer-next-history\n"
+ "bindkey \"^Xn\" _next_tags\n"
+ "bindkey \"^X^O\" overwrite-mode\n"
+ "bindkey \"^Xr\" history-incremental-search-backward\n"
+ "bindkey \"^X^R\" _read_comp\n"
+ "bindkey \"^Xs\" history-incremental-search-forward\n"
+ "bindkey \"^Xt\" _complete_tag\n"
+ "bindkey \"^Xu\" undo\n"
+ "bindkey \"^X^U\" undo\n"
+ "bindkey \"^X^V\" vi-cmd-mode\n"
+ "bindkey \"^X=\" what-cursor-position\n"
+ "bindkey \"^X^X\" exchange-point-and-mark\n"
+ "bindkey \"^[y\" transpose-words-match\n"
+ "bindkey \"^Y\" yank\n"
+ "bindkey \"^[z\" execute-last-named-cmd\n"
+ "bindkey \"^[^Z\" redo\n"
+ "bindkey '^[^Z' redo\n"
+ "bindkey \"^[[Z\" reverse-menu-complete\n"
+ "bindkey \"^Z\" undo\n"
+ "bindkey '^Z' undo\n";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE | Pattern.COMMENTS);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html