import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "((D|O|0|3|\\}|>|\\*\\<\\||\\|)?(%|#|\\||x|X|B|8|:|;|\\=)('|\")?(\\^|c|-|‑|o|っ)?(D|\\)|\\(|c|<|\\[|\\]|C|\\{|\\}|\\||\\&|>|\\||3|Þ|þ|b|p|P|o|O|J|L|S|s|X|\\\\|\\.|/|\\$|\\*|#|@))";
final String string = ":( Hello!\n"
+ "Howdy :)!\n"
+ "Are you there :P?\n"
+ "I'm fine :)\n"
+ ":p\n"
+ ":O\n"
+ ":3\n"
+ ":|\n"
+ ":/\n"
+ ":\\\n"
+ ":$\n"
+ ":*\n"
+ ":@\n"
+ ":(\n\n"
+ ":-(\n"
+ ":-)\n"
+ ":-P\n"
+ ":-p\n"
+ ":-O\n"
+ ":-3\n"
+ ":-|\n"
+ ":-/\n"
+ ":-\\\n"
+ ":-$\n"
+ ":-*\n"
+ ":-@\n\n"
+ ":^(\n"
+ ":^)\n"
+ ":^P\n"
+ ":^p\n"
+ ":^O\n"
+ ":^3\n"
+ ":^|\n"
+ ":^/\n"
+ ":^\\\n"
+ ":^$\n"
+ ":^*\n"
+ ":^@\n\n"
+ "):\n"
+ "(:\n"
+ "$:\n"
+ "*:\n\n"
+ ")-:\n"
+ "(-:\n"
+ "$-:\n"
+ "*-:\n\n"
+ ")^:\n"
+ "(^:\n"
+ "$^:\n"
+ "*^:\n\n"
+ "<3\n"
+ "</3\n"
+ "<\\3\n\n"
+ ":‑) \n"
+ ":) \n"
+ ":D \n"
+ ":o) \n"
+ ":-)\n"
+ ":] \n"
+ ":3 \n"
+ ":c) \n"
+ ":> \n"
+ ":-&\n"
+ "=] \n"
+ "8) \n"
+ "=) \n"
+ ":} \n"
+ ":^) \n"
+ ":‑D \n"
+ "8‑D \n"
+ "8D \n"
+ "x‑D \n"
+ "xD \n"
+ "X‑D\n"
+ "XD \n"
+ "=‑D \n"
+ "=D \n"
+ "=‑3 \n"
+ "=3 \n"
+ "B^D\n"
+ ":-))\n"
+ ">:[ \n"
+ ":‑( \n"
+ ":( \n"
+ ":‑c\n"
+ ":c \n"
+ ":-< \n"
+ ":っC \n"
+ ":< \n"
+ ":-< \n"
+ ":‑[ \n"
+ ":[ \n"
+ ":{\n"
+ ";(\n"
+ ":-|| \n"
+ ":@ \n"
+ ">:(\n"
+ ":'‑( \n"
+ ":\"(\n"
+ ":\"-(\n"
+ ":'(\n"
+ ":'‑) \n"
+ ":')\n"
+ "D:< \n"
+ "D: \n"
+ "D8 \n"
+ "D; \n"
+ "D= \n"
+ "DX \n"
+ "v.v \n"
+ "D‑':\n"
+ ":'-D\n"
+ ">:O \n"
+ ":‑O \n"
+ ":O \n"
+ ":‑o \n"
+ ":o \n"
+ "8‑0 \n"
+ "O_O \n"
+ "o‑o \n"
+ "O_o \n"
+ "o_O \n"
+ "o_o\n"
+ "owo\n"
+ "Owo\n"
+ "OwO\n"
+ "ouo\n"
+ "OuO \n"
+ "O-O\n"
+ ":* \n"
+ ":^*\n"
+ ";‑)\n"
+ ";)\n"
+ ";‑] \n"
+ ";]\n"
+ ";D\n"
+ ";^)\n"
+ ">:P\n"
+ ":‑P \n"
+ ":P \n"
+ "X‑P \n"
+ "x‑p \n"
+ "xp \n"
+ "XP \n"
+ ":‑p \n"
+ ":p \n"
+ "=p \n"
+ ":‑Þ \n"
+ ":Þ \n"
+ ":þ \n"
+ ":‑þ \n"
+ ":‑b \n"
+ ":b \n"
+ "d:\n"
+ ">:\\\n"
+ ">:/\n"
+ ":‑/\n"
+ ":‑.\n"
+ ":/\n"
+ ":\\\n"
+ ":L\n"
+ "=/\n"
+ "=\\\n"
+ ":L\n"
+ "=L\n"
+ ":S\n"
+ ">.<\n"
+ ">/<\n"
+ ">//<\n"
+ ">///<\n"
+ ":|\n"
+ ":‑|\n"
+ ":$\n"
+ ":‑X\n"
+ ":X\n"
+ ":‑#\n"
+ ":#\n"
+ "O:‑)\n"
+ "0:‑3 \n"
+ "0:3 \n"
+ "0:‑) \n"
+ "0:) \n"
+ "0;^)\n"
+ ">:)\n"
+ ">;)\n"
+ ">:‑)\n"
+ "}:‑)\n"
+ "}:)\n"
+ "3:‑)\n"
+ "3:)\n"
+ ">_>\n"
+ "^ ^\n"
+ "^_^\n"
+ "^_<\n"
+ ">_^\n"
+ "<_<\n"
+ "|;-)\n"
+ "|-O\n"
+ ":-J\n"
+ ":-&\n"
+ ":&\n"
+ "#-)\n"
+ "#)\n"
+ "%-)\n"
+ "%)\n"
+ ":|\n\n"
+ ":o|\n"
+ ":-|\n"
+ "ಠ_ಠ\n"
+ ":-\\\n"
+ "*<|:-)\n"
+ "<3 </3\n"
+ "ˊ_>ˋ\n";
final Pattern pattern = Pattern.compile(regex);
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