Skip to content

Instantly share code, notes, and snippets.

@dmikurube
Last active October 27, 2016 07:55
Show Gist options
  • Save dmikurube/54167d09549c7f8423c2956e3d4601f1 to your computer and use it in GitHub Desktop.
Save dmikurube/54167d09549c7f8423c2956e3d4601f1 to your computer and use it in GitHub Desktop.
How Java's quoted regex (\Q...\E) works.
/*
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
======A==========Z===================-
"A-Z": /[^\QA-Z\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
==========================.===========
".": /[^\Q.\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
==========================.========*==
".*": /[^\Q.*\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
======================_===============
"_": /[^\Q_\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
======ABCDEGPWXXYZ====_===============
"_": /[^A-Z\Q_\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
===================(==================
"(": /[^\Q(\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
======================={==============
"{": /[^\Q{\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
=========================|============
"|": /[^\Q|\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
==============================}=======
"}": /[^\Q}\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
===========================)==========
")": /[^\Q)\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
========================@=============
"@": /[^\Q@\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
==============XX=====2={======}=======
"X{2}": /[^\QX{2}\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
===================================*==
"*": /[^\Q*\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
============================+=========
"+": /[^\Q+\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
===============================\======
"\": /[^\Q\\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
===============================\======
"\\": /[^\Q\\\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
================================/=====
"/": /[^\Q/\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
=================================^====
"^": /[^\Q^\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
=============================$====$===
"$": /[^\Q$\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
=b=============================\======
"\b": /[^\Q\b\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
=======B=======================\======
"\B": /[^\Q\B\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
======A========================\======
"\A": /[^\Q\A\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
===========G===================\======
"\G": /[^\Q\G\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
=====z=========================\======
"\z": /[^\Q\z\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
java.util.regex.PatternSyntaxException: Illegal/unsupported escape sequence near index 3
[^\Q\E\E]
^
"\E": /[^\Q\E\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
======A========================\======
"\A": /[^\Q\A\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
========C======================\======
"\C": /[^\Q\C\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
==============XX===============\======
"\X": /[^\Q\X\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
================Y==============\======
"\Y": /[^\Q\Y\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
=================Z=============\======
"\Z": /[^\Q\Z\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
=============W=================\======
"\W": /[^\Q\W\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
============P==================\======
"\P": /[^\Q\P\E]/
abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\/^$*!-
=========D=====================\======
"\D": /[^\Q\D\E]/
*/
public class JavaQuotedRegex {
private static final String base = "abcxyzABCDEGPWXXYZ0(12_{@|.)+$}\\/^$*!-";
public static void printReplace(String characters, String pattern) {
String regex = "[^" + pattern + "\\Q" +characters+ "\\E]";
System.out.println(base);
try {
System.out.println(base.replaceAll(regex, "="));
} catch (java.util.regex.PatternSyntaxException ex) {
System.out.println(ex);
}
System.out.printf("\"%s\": /%s/\n", characters, regex);
System.out.println("");
}
public static void printReplace(String characters) {
printReplace(characters, "");
}
public static void main(String[] args) {
System.out.println("");
printReplace("A-Z");
printReplace(".");
printReplace(".*");
printReplace("_");
printReplace("_", "A-Z");
printReplace("(");
printReplace("{");
printReplace("|");
printReplace("}");
printReplace(")");
printReplace("@");
printReplace("X{2}");
printReplace("*");
printReplace("+");
printReplace("\\");
printReplace("\\\\");
printReplace("/");
printReplace("^");
printReplace("$");
printReplace("\\b");
printReplace("\\B");
printReplace("\\A");
printReplace("\\G");
printReplace("\\z");
printReplace("\\E");
printReplace("\\A");
printReplace("\\C");
printReplace("\\X");
printReplace("\\Y");
printReplace("\\Z");
printReplace("\\W");
printReplace("\\P");
printReplace("\\D");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment