What is the regex to extract all the emojis from a string?
JavaRegexUtf 8EmojiJava Problem Overview
I have a String encoded in UTF-8. For example:
Thats a nice joke ððð ð
I have to extract all the emojis present in the sentence. And the emoji could be any
When this sentence is viewed in terminal using command less text.txt
it is viewed as:
Thats a nice joke <U+1F606><U+1F606><U+1F606> <U+1F61B>
This is the corresponding UTF code for the emoji. All the codes for emojis can be found at emojitracker.
For the purpose of finding all the occurances, I used a regular expression pattern (<U\+\w+?>)
but it didnt work for the UTF-8 encoded string.
Following is my code:
String s="Thats a nice joke ððð ð";
Pattern pattern = Pattern.compile("(<U\\+\\w+?>)");
Matcher matcher = pattern.matcher(s);
List<String> matchList = new ArrayList<String>();
while (matcher.find()) {
matchList.add(matcher.group());
}
for(int i=0;i<matchList.size();i++){
System.out.println(matchList.get(i));
}
This pdf says Range: 1F300â1F5FF for Miscellaneous Symbols and Pictographs
. So I want to capture any character lying within this range.
Java Solutions
Solution 1 - Java
Using emoji-java i've wrote a simple method that removes all emojis including fitzpatrick modifiers. Requires an external library but easier to maintain than those monster regexes.
Use:
String input = "A string ðwith a \uD83D\uDC66\uD83C\uDFFFfew ðemojis!";
String result = EmojiParser.removeAllEmojis(input);
emoji-java maven installation:
<dependency>
<groupId>com.vdurmont</groupId>
<artifactId>emoji-java</artifactId>
<version>3.1.3</version>
</dependency>
gradle:
implementation 'com.vdurmont:emoji-java:3.1.3'
EDIT: previously submitted answer was pulled into emoji-java source code.
Solution 2 - Java
> the pdf that you just mentioned says Range: 1F300â1F5FF for Miscellaneous Symbols and Pictographs. So lets say I want to capture any character lying within this range. Now what to do?
Okay, but I will just note that the emoji in your question are outside that range! :-)
The fact that these are above 0xFFFF
complicates things, because Java strings store UTF-16. So we can't just use one simple character class for it. We're going to have surrogate pairs. (More: http://www.unicode.org/faq/utf_bom.html)
U+1F300 in UTF-16 ends up being the pair \uD83C\uDF00
; U+1F5FF ends up being \uD83D\uDDFF
. Note that the first character went up, we cross at least one boundary. So we have to know what ranges of surrogate pairs we're looking for.
Not being steeped in knowledge about the inner workings of UTF-16, I wrote a program to find out (source at the end â I'd double-check it if I were you, rather than trusting me). It tells me we're looking for \uD83C
followed by anything in the range \uDF00-\uDFFF
(inclusive), or \uD83D
followed by anything in the range \uDC00-\uDDFF
(inclusive).
So armed with that knowledge, in theory we could now write a pattern:
// This is wrong, keep reading
Pattern p = Pattern.compile("(?:\uD83C[\uDF00-\uDFFF])|(?:\uD83D[\uDC00-\uDDFF])");
That's an alternation of two non-capturing groups, the first group for the pairs starting with \uD83C
, and the second group for the pairs starting with \uD83D
.
But that fails (doesn't find anything). I'm fairly sure it's because we're trying to specify half of a surrogate pair in various places:
Pattern p = Pattern.compile("(?:\uD83C[\uDF00-\uDFFF])|(?:\uD83D[\uDC00-\uDDFF])");
// Half of a pair --------------^------^------^-----------^------^------^
We can't just split up surrogate pairs like that, they're called surrogate pairs for a reason. :-)
Consequently, I don't think we can use regular expressions (or indeed, any string-based approach) for this at all. I think we have to search through char
arrays.
char
arrays hold UTF-16 values, so we can find those half-pairs in the data if we look for it the hard way:
String s = new StringBuilder()
.append("Thats a nice joke ")
.appendCodePoint(0x1F606)
.appendCodePoint(0x1F606)
.appendCodePoint(0x1F606)
.append(" ")
.appendCodePoint(0x1F61B)
.toString();
char[] chars = s.toCharArray();
int index;
char ch1;
char ch2;
index = 0;
while (index < chars.length - 1) { // -1 because we're looking for two-char-long things
ch1 = chars[index];
if ((int)ch1 == 0xD83C) {
ch2 = chars[index+1];
if ((int)ch2 >= 0xDF00 && (int)ch2 <= 0xDFFF) {
System.out.println("Found emoji at index " + index);
index += 2;
continue;
}
}
else if ((int)ch1 == 0xD83D) {
ch2 = chars[index+1];
if ((int)ch2 >= 0xDC00 && (int)ch2 <= 0xDDFF) {
System.out.println("Found emoji at index " + index);
index += 2;
continue;
}
}
++index;
}
Obviously that's just debug-level code, but it does the job. (In your given string, with its emoji, of course it won't find anything as they're outside the range. But if you change the upper bound on the second pair to 0xDEFF
instead of 0xDDFF
, it will. No idea if that would also include non-emojis, though.)
Source of my program to find out what the surrogate ranges were:
public class FindRanges {
public static void main(String[] args) {
char last0 = '\0';
char last1 = '\0';
for (int x = 0x1F300; x <= 0x1F5FF; ++x) {
char[] chars = new StringBuilder().appendCodePoint(x).toString().toCharArray();
if (chars[0] != last0) {
if (last0 != '\0') {
System.out.println("-\\u" + Integer.toHexString((int)last1).toUpperCase());
}
System.out.print("\\u" + Integer.toHexString((int)chars[0]).toUpperCase() + " \\u" + Integer.toHexString((int)chars[1]).toUpperCase());
last0 = chars[0];
}
last1 = chars[1];
}
if (last0 != '\0') {
System.out.println("-\\u" + Integer.toHexString((int)last1).toUpperCase());
}
}
}
Output:
\uD83C \uDF00-\uDFFF \uD83D \uDC00-\uDDFF
Solution 3 - Java
Had a similar problem. The following served me well and matches surrogate pairs
public class SplitByUnicode {
public static void main(String[] argv) throws Exception {
String string = "Thats a nice joke ððð ð";
System.out.println("Original String:"+string);
String regexPattern = "[\uD83C-\uDBFF\uDC00-\uDFFF]+";
byte[] utf8 = string.getBytes("UTF-8");
String string1 = new String(utf8, "UTF-8");
Pattern pattern = Pattern.compile(regexPattern);
Matcher matcher = pattern.matcher(string1);
List<String> matchList = new ArrayList<String>();
while (matcher.find()) {
matchList.add(matcher.group());
}
for(int i=0;i<matchList.size();i++){
System.out.println(i+":"+matchList.get(i));
}
}
}
Output is:
Original String:Thats a nice joke ïïï ï
0:ïïï
1:ï
Found the regex from https://stackoverflow.com/a/24071599/915972
Solution 4 - Java
Just to use regex to solve it:
s = s.replaceAll("\\p{So}+", "");
You can find it in
http://www.regular-expressions.info/unicode.html
https://docs.oracle.com/javase/7/docs/api/java/lang/Character.html#OTHER_SYMBOL
Solution 5 - Java
This worked for me in java 8:
public static String mysqlSafe(String input) {
if (input == null) return null;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < input.length(); i++) {
if (i < (input.length() - 1)) { // Emojis are two characters long in java, e.g. a rocket emoji is "\uD83D\uDE80";
if (Character.isSurrogatePair(input.charAt(i), input.charAt(i + 1))) {
i += 1; //also skip the second character of the emoji
continue;
}
}
sb.append(input.charAt(i));
}
return sb.toString();
}
Solution 6 - Java
you can do it like this
String s="Thats a nice joke ððð ð";
Pattern pattern = Pattern.compile("[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]",
Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(s);
List<String> matchList = new ArrayList<String>();
while (matcher.find()) {
matchList.add(matcher.group());
}
for(int i=0;i<matchList.size();i++){
System.out.println(matchList.get(i));
}
Solution 7 - Java
The best regex for extracting ALL emoji is this:
(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|[\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|[\ud83c[\ude32-\ude3a]|[\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])
It identifies many single-char emoji that the other answers do not account for. For more information about how this regex works, take a look at this post. https://medium.com/@thekevinscott/emojis-in-javascript-f693d0eb79fb#.enomgcu63
Solution 8 - Java
Assuming that you are asking for standard Unicode emoji ranges (there are different blocks by vendor) you may consider these three ranges:
- 0x20a0 - 0x32ff
- 0x1f000 - 0x1ffff
- 0xfe4e5 - 0xfe4ee
Besides all the thoughtful explanation that T.J.Crowder has shared with us, needs to be said that beginning with Java 7 is possible to match UTF-16 encoded surrogate pairs with ease.
Take a look at the docs:
http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
> A Unicode character can also be represented in a regular-expression by using its Hex notation(hexadecimal code point value) directly as described in construct \x{...}, for example a supplementary character U+2011F can be specified as \x{2011F}, instead of two consecutive Unicode escape sequences of the surrogate pair \uD840\uDD1F.
Nevertheless, if you cannot switch to Java 7, you can extend the valuable UnicodeEscaper provided by Guava.
Here an implementation for the sake of example:
public class SimpleEscaper extends UnicodeEscaper
{
@Override
protected char[] escape(int codePoint)
{
if (0x1f000 >= codePoint && codePoint <= 0x1ffff)
{
return Integer.toHexString(codePoint).toCharArray();
}
return Character.toChars(codePoint);
}
}
Solution 9 - Java
Emoji regex
public static final String sEmojiRegex = "(?:[\\u2700-\\u27bf]|" +
"(?:[\\ud83c\\udde6-\\ud83c\\uddff]){2}|" +
"[\\ud800\\udc00-\\uDBFF\\uDFFF]|[\\u2600-\\u26FF])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|[\\ud83c\\udffb-\\ud83c\\udfff])?" +
"(?:\\u200d(?:[^\\ud800-\\udfff]|" +
"(?:[\\ud83c\\udde6-\\ud83c\\uddff]){2}|" +
"[\\ud800\\udc00-\\uDBFF\\uDFFF]|[\\u2600-\\u26FF])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|[\\ud83c\\udffb-\\ud83c\\udfff])?)*|" +
"[\\u0023-\\u0039]\\ufe0f?\\u20e3|\\u3299|\\u3297|\\u303d|\\u3030|\\u24c2|[\\ud83c\\udd70-\\ud83c\\udd71]|[\\ud83c\\udd7e-\\ud83c\\udd7f]|\\ud83c\\udd8e|[\\ud83c\\udd91-\\ud83c\\udd9a]|[\\ud83c\\udde6-\\ud83c\\uddff]|[\\ud83c\\ude01-\\ud83c\\ude02]|\\ud83c\\ude1a|\\ud83c\\ude2f|[\\ud83c\\ude32-\\ud83c\\ude3a]|[\\ud83c\\ude50-\\ud83c\\ude51]|\\u203c|\\u2049|[\\u25aa-\\u25ab]|\\u25b6|\\u25c0|[\\u25fb-\\u25fe]|\\u00a9|\\u00ae|\\u2122|\\u2139|\\ud83c\\udc04|[\\u2600-\\u26FF]|\\u2b05|\\u2b06|\\u2b07|\\u2b1b|\\u2b1c|\\u2b50|\\u2b55|\\u231a|\\u231b|\\u2328|\\u23cf|[\\u23e9-\\u23f3]|[\\u23f8-\\u23fa]|\\ud83c\\udccf|\\u2934|\\u2935|[\\u2190-\\u21ff]";
some emojis (1627)
// count = 1627
public static final String sEmojiTest = "ðððððð
ðð€£âºïžðððððððððððððððð€ð€ð€ðð€¡ð€ ðððððððâ¹ïžð£ðð«ð©ð€ð ð¡ð¶ððð¯ðŠð§ð®ð²ðµð³ð±ðšð°ð¢ð¥ð€€ðððªðŽðð€ð€¥ð¬ð€ð€¢ð€§ð·ð€ð€ðð¿ð¹ðºð©ð»ðâ ïžðœðŸð€ððºðžð¹ð»ðŒðœðð¿ðŸððððð€ðððâð€ð€ð€âïžð€ðððððâïžâð€ðððð€ðªðâïžð€³ð
ððððð
ððð£ððð£ð€ð¥ð¶ðŠð§ðšð©ð±ââð±ðŽðµð²ð³ââð³ð®ââð®ð·ââð·ðââððµïžââïžðµð©ââðšââð©âðŸðšâðŸð©âð³ðšâð³ð©âððšâðð©âð€ðšâð€ð©âð«ðšâð«ð©âððšâðð©âð»ðšâð»ð©âðŒðšâðŒð©âð§ðšâð§ð©âð¬ðšâð¬ð©âðšðšâðšð©âððšâðð©ââðšââð©âððšâðð©ââðšââð€¶ð
ðžð€Žð°ð€µðŒð€°ðââðððââð
ð
ââððââððââð€Šââð€Šââð€·ââð€·ââððââððââððââððââðŽððºð¯ð¯ââð¶ââð¶ðââðð«ðð¬ðð©ââ€ïžâð©ðšââ€ïžâðšðð©ââ€ïžâðâð©ðšââ€ïžâðâðšðªðšâð©âð§ðšâð©âð§âðŠðšâð©âðŠâðŠðšâð©âð§âð§ð©âð©âðŠð©âð©âð§ð©âð©âð§âðŠð©âð©âðŠâðŠð©âð©âð§âð§ðšâðšâðŠðšâðšâð§ðšâðšâð§âðŠðšâðšâðŠâðŠðšâðšâð§âð§ð©âðŠð©âð§ð©âð§âðŠð©âðŠâðŠð©âð§âð§ðšâðŠðšâð§ðšâð§âðŠðšâðŠâðŠðšâð§âð§ðððððððð ð¡ð¢ðððð©ððâðððððŒðð¶ðâïžð¶ð±ðð¹ð°ðŠð»ðŒðšð¯ðŠð®ð·ðœðžðµðððððð§ðŠð€ð£ð¥ðŠðŠ
ðŠðŠðºððŽðŠðððŠððððð·ðžð¢ððŠðŠðŠðŠððŠð ðð¡ð¬ðŠð³ðððð
ððððŠðªð«ððŠðŠððððððð©ðððŠððððð¿ðŸðð²ðµðð²ð³ðŽð±ð¿âïžððððððððŸðð·ð¹ð¥ð»ðŒðžðºðððððððððððððððððð«âïžðâšâ¡ïžð¥ð¥ââïžð€â
ïžð¥ðŠðâïžð§âð©ðšâïžâïžâïžð¬ðšðªð«ðð§ðŠâïžðððððððððððððð¥ð¥ð
ðð¥ð¥ðœð¶ð¥ð ð°ð¥ð¯ð¥ðð¥ð§ð¥ð³ð¥ð¥ð€ððððððð¥ð®ð¯ð¥ð¥ððð²ð¥ð£ð±ððððð¢ð¡ð§ðšðŠð°ðð®ðð¬ð«ð¿ð©ðªð¥ðŒâïžðµð¶ðºð»ð¥ð·ð¥ðžð¹ðŸð¥ðŽðœâœïžððâŸïžðŸððð±ððžð¥
ðððâ³ïžð¹ð£ð¥ð¥âžð¿â·ððïžââïžðð€ºð€Œââð€Œââð€žââð€žâââ¹ïžââïžâ¹ð€Ÿââð€Ÿââðïžââïžððââððââðð€œââð€œââð£ââð£ððŽââðŽðµââðµðœð
ðð¥ð¥ð¥ððµðð«ððªð€¹ââð€¹ââððšð¬ð€ð§ðŒð¹ð¥ð·ðºðžð»ð²ð¯ð³ð®ð°ððððððððððððððŽð²ðµððšððððð¡ð ððððððð
ðððððððð©âïžð«ð¬ðð°ðºð¶âµïžð¥ð€ð³âŽð¢âïžð§âœïžððŠð¥ðºð¿ðœâ²ïžðŒð°ð¯ðð¡ð¢ð â±ððâ°ðð»ðððâºïžð€ð£ððð ð¡ððð¢ð¬ð£ð€ð¥ðŠðšðªð«ð©ððâªïžðððâ©ðŸððð
ðð ðððððððððâïžð±ð²ð»âšïžð¥ðšð±ð²ð¹ððœðŸð¿ððŒð·ðžð¹ð¥ðœððâïžðð ðºð»ðððâ±â²â°ð°âïžâ³ð¡ððð¡ðŠð¯ðð¢ðžðµðŽð¶ð·ð°ð³ðâïžð§ðšâð âð©âïžâð«ð£ðªð¡âïžð¡ð¬â°ïžâ±ïžðºð®ð¿ðâïžðð¬ð³ððð¡ðœð°ð¿ððððððªððððŒðððððððððð®ðâïžð©ðšð§ðð¥ð€ðŠð·ðªð«ð¬ðð®ð¯ððððððððððð
ððð³ððððððð°ðððððððððððððððððâïžððâïžðððâïžððððððâ€ïžððððð€ðâ£ïžððððððððâ®ïžâïžâªïžðâžïžâ¡ïžð¯ðâ¯ïžâŠïžðââïžâïžâïžâïžâïžâïžâïžâïžâïžâïžâïžâïžðâïžðâ¢ïžâ£ïžðŽð³ð¶ðïžðžðºð·ïžâŽïžðð®ðãïžãïžðŽðµð¹ð²ð
°ïžð
±ïžððð
Ÿïžðââïžðâïžðð«ð¯ð¢âšïžð·ð¯ð³ð±ððµðâïžââââŒïžâïžð
ðãœïžâ ïžðžð±âïžð°â»ïžâ
ð¯ïžð¹âïžâ³ïžâðð âïžðð€ð§ðŸâ¿ïžð
¿ïžð³ðïžðððð
ð¹ðºðŒð»ð®ðŠð¶ðð£â¹ïžð€ð¡ð ðððððð0ïžâ£1ïžâ£2ïžâ£3ïžâ£4ïžâ£5ïžâ£6ïžâ£7ïžâ£8ïžâ£9ïžâ£ðð¢#ïžâ£*ïžâ£â¶ïžâžâ¯â¹âºââ®â©âªâ«â¬âïžðŒðœâ¡ïžâ¬
ïžâ¬ïžâ¬ïžâïžâïžâïžâïžâïžâïžâªïžâ©ïžâ€Žïžâ€µïžððððððµð¶ââââïžð²ð±â¢ïžÂ©ïžÂ®ïžã°ïžâ°â¿ðððððâïžâïžðâªïžâ«ïžðŽðµðºð»ðžð¹ð¶ð·ð³ð²âªïžâ«ïžâŸïžâœïžâŒïžâ»ïžâ¬ïžâ¬ïžððððððð£ð¢ðâðšð¬ðð¯â ïžâ£ïžâ¥ïžâŠïžððŽðïžððððððððððððððððð ð¡ð¢ð£ð€ð¥ðŠð§ð³ïžðŽðð©ð³ïžâððŠð«ðŠðœðŠð±ð©ð¿ðŠðžðŠð©ðŠðŽðŠð®ðŠð¶ðŠð¬ðŠð·ðŠð²ðŠðŒðŠðºðŠð¹ðŠð¿ð§ðžð§ðð§ð©ð§ð§ð§ðŸð§ðªð§ð¿ð§ð¯ð§ð²ð§ð¹ð§ðŽð§ð¶ð§ðŠð§ðŒð§ð·ð®ðŽð»ð¬ð§ð³ð§ð¬ð§ð«ð§ð®ðšð»ð°ððšð²ðšðŠð®ðšð°ðŸðšð«ð¹ð©ðšð±ðšð³ðšðœðšðšðšðŽð°ð²ðšð¬ðšð©ðšð°ðšð·ðšð®ðð·ðšðºðšðŒðšðŸðšð¿ð©ð°ð©ð¯ð©ð²ð©ðŽðªðšðªð¬ðžð»ð¬ð¶ðªð·ðªðªðªð¹ðªðºð«ð°ð«ðŽð«ð¯ð«ð®ð«ð·ð¬ð«ðµð«ð¹ð«ð¬ðŠð¬ð²ð¬ðªð©ðªð¬ðð¬ð®ð¬ð·ð¬ð±ð¬ð©ð¬ðµð¬ðºð¬ð¹ð¬ð¬ð¬ð³ð¬ðŒð¬ðŸðð¹ðð³ðð°ððºð®ðžð®ð³ð®ð©ð®ð·ð®ð¶ð®ðªð®ð²ð®ð±ð®ð¹ð¯ð²ð¯ðµðð¯ðªð¯ðŽð°ð¿ð°ðªð°ð®ðœð°ð°ðŒð°ð¬ð±ðŠð±ð»ð±ð§ð±ðžð±ð·ð±ðŸð±ð®ð±ð¹ð±ðºð²ðŽð²ð°ð²ð¬ð²ðŒð²ðŸð²ð»ð²ð±ð²ð¹ð²ðð²ð¶ð²ð·ð²ðºðŸð¹ð²ðœð«ð²ð²ð©ð²ðšð²ð³ð²ðªð²ðžð²ðŠð²ð¿ð²ð²ð³ðŠð³ð·ð³ðµð³ð±ð³ðšð³ð¿ð³ð®ð³ðªð³ð¬ð³ðºð³ð«ð²ðµð°ðµð³ðŽðŽð²ðµð°ðµðŒðµðžðµðŠðµð¬ðµðŸðµðªðµððµð³ðµð±ðµð¹ðµð·ð¶ðŠð·ðªð·ðŽð·ðºð·ðŒð§ð±ðžðð°ð³ð±ðšðµð²ð»ðšðŒðžðžð²ðžð¹ðžðŠðžð³ð·ðžðžðšðžð±ðžð¬ðžðœðžð°ðžð®ðžð§ðžðŽð¿ðŠð¬ðžð°ð·ðžðžðªðžð±ð°ðžð©ðžð·ðžð¿ðžðªðšððžðŸð¹ðŒð¹ð¯ð¹ð¿ð¹ðð¹ð±ð¹ð¬ð¹ð°ð¹ðŽð¹ð¹ð¹ð³ð¹ð·ð¹ð²ð¹ðšð¹ð»ðºð¬ðºðŠðŠðªð¬ð§ðºðžð»ð®ðºðŸðºð¿ð»ðºð»ðŠð»ðªð»ð³ðŒð«ðªððŸðªð¿ð²ð¿ðŒâœïžððâŸïžðŸððð±ððžð¥
ðððâ³ïžð¹ð£ð¥ð¥âžð¿â·ððïžââïžðð»ââïžððŒââïžððœââïžððŸââïžðð¿ââïžðïžðð»ððŒððœððŸðð¿ð€ºð€Œââïžð€Œââïžð€žââïžð€žð»ââïžð€žðŒââïžð€žðœââïžð€žðŸââïžð€žð¿ââïžð€žââïžð€žð»ââïžð€žðŒââïžð€žðœââïžð€žðŸââïžð€žð¿ââïžâ¹ïžââïžâ¹ð»ââïžâ¹ðŒââïžâ¹ðœââïžâ¹ðŸââïžâ¹ð¿ââïžâ¹ïžâ¹ð»â¹ðŒâ¹ðœâ¹ðŸâ¹ð¿ð€Ÿââïžð€Ÿð»ââïžð€ŸðŒââïžð€Ÿðœââïžð€ŸðŸââïžð€Ÿð¿ââïžð€Ÿââïžð€Ÿð»ââïžð€ŸðŒââïžð€Ÿðœââïžð€ŸðŸââïžð€Ÿð¿ââïžðïžââïžðð»ââïžððŒââïžððœââïžððŸââïžðð¿ââïžðïžðð»ððŒððœððŸðð¿ðââïžðð»ââïžððŒââïžððœââïžððŸââïžðð¿ââïžððð»ððŒððœððŸðð¿ðââïžðð»ââïžððŒââïžððœââïžððŸââïžðð¿ââïžððð»ððŒððœððŸðð¿ð€œââïžð€œð»ââïžð€œðŒââïžð€œðœââïžð€œðŸââïžð€œð¿ââïžð€œââïžð€œð»ââïžð€œðŒââïžð€œðœââïžð€œðŸââïžð€œð¿ââïžð£ââïžð£ð»ââïžð£ðŒââïžð£ðœââïžð£ðŸââïžð£ð¿ââïžð£ð£ð»ð£ðŒð£ðœð£ðŸð£ð¿ððð»ððŒððœððŸðð¿ðŽââïžðŽð»ââïžðŽðŒââïžðŽðœââïžðŽðŸââïžðŽð¿ââïžðŽðŽð»ðŽðŒðŽðœðŽðŸðŽð¿ðµââïžðµð»ââïžðµðŒââïžðµðœââïžðµðŸââïžðµð¿ââïžðµðµð»ðµðŒðµðœðµðŸðµð¿ðœð
ðð¥ð¥ð¥ððµðð«ððªð€¹ââïžð€¹ââïžððšð¬ð€ð§ðŒð¹ð¥ð·ðºðžð»ð²ð¯ð³ð®ð°";
function to test emojis
public void checkMatchingEmojis() {
final Pattern pattern = Pattern.compile(sEmojiRegex);
final Matcher matcher = pattern.matcher(sEmojiTest);
int foundEmojiCount = 0;
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
foundEmojiCount++;
}
System.out.println("*******************************************");
System.out.println("Input Emoji count = 1627");
System.out.println("Captured Emoji count = " + foundEmojiCount);
System.out.println("*******************************************");
}
Here is the gist, tested on all unicode 10 emojis
Thanks to Kevin Scott for writting greate example
Solution 10 - Java
There are two ways to solve this sticky problem.
The first one is Using third-party libs like emoji-java and emoji4j. These are mentioned above. You can easily use the method containsEmoji
or removesEmoji
, etc. And in your own Apps, you need to keep update with these libs.
As for me, I want to find a simple solution to solve this problem.
After a whole day of searching, I've found a magic regex:
"(?:[\uD83C\uDF00-\uD83D\uDDFF]|[\uD83E\uDD00-\uD83E\uDDFF]|[\uD83D\uDE00-\uD83D\uDE4F]|[\uD83D\uDE80-\uD83D\uDEFF]|[\u2600-\u26FF]\uFE0F?|[\u2700-\u27BF]\uFE0F?|\u24C2\uFE0F?|[\uD83C\uDDE6-\uD83C\uDDFF]{1,2}|[\uD83C\uDD70\uD83C\uDD71\uD83C\uDD7E\uD83C\uDD7F\uD83C\uDD8E\uD83C\uDD91-\uD83C\uDD9A]\uFE0F?|[\u0023\u002A\u0030-\u0039]\uFE0F?\u20E3|[\u2194-\u2199\u21A9-\u21AA]\uFE0F?|[\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55]\uFE0F?|[\u2934\u2935]\uFE0F?|[\u3030\u303D]\uFE0F?|[\u3297\u3299]\uFE0F?|[\uD83C\uDE01\uD83C\uDE02\uD83C\uDE1A\uD83C\uDE2F\uD83C\uDE32-\uD83C\uDE3A\uD83C\uDE50\uD83C\uDE51]\uFE0F?|[\u203C\u2049]\uFE0F?|[\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE]\uFE0F?|[\u00A9\u00AE]\uFE0F?|[\u2122\u2139]\uFE0F?|\uD83C\uDC04\uFE0F?|\uD83C\uDCCF\uFE0F?|[\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA]\uFE0F?)"
which I have tested OK in Java. It perfectly solved my problem.
You can view this on the Github page:
https://github.com/zly394/EmojiRegex
Notes:
The answer which provided by @Eric Nakagawa contains some errors, which cannot be operated properly.
Solution 11 - Java
You may also use emoji4j library.
String emojiText = "A ð±, ð± and a ð became friends. For ð¶'s birthday party, they all had ðs, ðs, ðªs and ð°.";
EmojiUtils.removeAllEmojis(emojiText);//returns "A , and a became friends. For 's birthday party, they all had s, s, s and .
Solution 12 - Java
This is what I use to remove emojis and so far it has shown to allow all other alphabets.
private static String remove_Emojis(String name)
{
//we will store all the letters in this array
ArrayList<Character> nonEmoji = new ArrayList<>();
// and when we rebuild the name we will put it in here
String newName = "";
// we are going to loop through checking each character to see if its an emoji or not
for (int i = 0; i < name.length(); i++)
{
if (Character.isLetterOrDigit(name.charAt(i)))
{
nonEmoji.add(name.charAt(i));
}
else
{
// this is just a 2nd check in case the other method didn't allow some letter
if (Build.VERSION.SDK_INT > 18)
{
if (Character.isAlphabetic(name.charAt(i)))
{
nonEmoji.add(name.charAt(i));
}
}
}
if (name.charAt(i) == ' ')// may want to consider adding or '-' or '\''
{
nonEmoji.add(i);// just add it
}
if (name.charAt(i) == '@' && !name.contains(" "))// I put this in for email addresses
{
nonEmoji.add('@');
}
}
// finally just loop through building it back out
for (int i = 0; i < nonEmoji.size(); i++) {
newName += nonEmoji.get(i);
}
return newName;
}
Solution 13 - Java
Here's a simpler approach and a regex that correctly parses (at current date May 2021) all 3,521 emojis.
It's a programmatically built, simple alternation the works by matching the longest emojis first, thus avoiding the problem that arises with a lot of suggested patterns, that of partial matching within compound emojis. (example: ï©ï¿ââ€ïžâïâïšïŒ - since this is several emojis glued together with the Zero Width Joiner (U+200D
) you need to match the longer sequence without partial matching on the components)
So that the pattern is short enough to be pasted right here, we've brazenly used literal emojis, but unicode escapes work just as well (see links at bottom for demos and source code):
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MyClass {
public static void main(String args[]) {
String line = "Adds ð« word-relevant ð emojis ð€ †to ð± text âš with ð sometimes ð
ð hilarious ð ð results ð. Read more ðð
aboutðšðŸââ€ïžâðâðšðŒ maðtching compound emojis";
String pattern = "(?:ð§ð»ââ€ïžâðâð§ðŒ|ð§ð»ââ€ïžâðâð§ðœ|ð§ð»ââ€ïžâðâð§ðŸ|ð§ð»ââ€ïžâðâð§ð¿|ð§ðŒââ€ïžâðâð§ð»|ð§ðŒââ€ïžâðâð§ðœ|ð§ðŒââ€ïžâðâð§ðŸ|ð§ðŒââ€ïžâðâð§ð¿|ð§ðœââ€ïžâðâð§ð»|ð§ðœââ€ïžâðâð§ðŒ|ð§ðœââ€ïžâðâð§ðŸ|ð§ðœââ€ïžâðâð§ð¿|ð§ðŸââ€ïžâðâð§ð»|ð§ðŸââ€ïžâðâð§ðŒ|ð§ðŸââ€ïžâðâð§ðœ|ð§ðŸââ€ïžâðâð§ð¿|ð§ð¿ââ€ïžâðâð§ð»|ð§ð¿ââ€ïžâðâð§ðŒ|ð§ð¿ââ€ïžâðâð§ðœ|ð§ð¿ââ€ïžâðâð§ðŸ|ð©ð»ââ€ïžâðâðšð»|ð©ð»ââ€ïžâðâðšðŒ|ð©ð»ââ€ïžâðâðšðœ|ð©ð»ââ€ïžâðâðšðŸ|ð©ð»ââ€ïžâðâðšð¿|ð©ðŒââ€ïžâðâðšð»|ð©ðŒââ€ïžâðâðšðŒ|ð©ðŒââ€ïžâðâðšðœ|ð©ðŒââ€ïžâðâðšðŸ|ð©ðŒââ€ïžâðâðšð¿|ð©ðœââ€ïžâðâðšð»|ð©ðœââ€ïžâðâðšðŒ|ð©ðœââ€ïžâðâðšðœ|ð©ðœââ€ïžâðâðšðŸ|ð©ðœââ€ïžâðâðšð¿|ð©ðŸââ€ïžâðâðšð»|ð©ðŸââ€ïžâðâðšðŒ|ð©ðŸââ€ïžâðâðšðœ|ð©ðŸââ€ïžâðâðšðŸ|ð©ðŸââ€ïžâðâðšð¿|ð©ð¿ââ€ïžâðâðšð»|ð©ð¿ââ€ïžâðâðšðŒ|ð©ð¿ââ€ïžâðâðšðœ|ð©ð¿ââ€ïžâðâðšðŸ|ð©ð¿ââ€ïžâðâðšð¿|ðšð»ââ€ïžâðâðšð»|ðšð»ââ€ïžâðâðšðŒ|ðšð»ââ€ïžâðâðšðœ|ðšð»ââ€ïžâðâðšðŸ|ðšð»ââ€ïžâðâðšð¿|ðšðŒââ€ïžâðâðšð»|ðšðŒââ€ïžâðâðšðŒ|ðšðŒââ€ïžâðâðšðœ|ðšðŒââ€ïžâðâðšðŸ|ðšðŒââ€ïžâðâðšð¿|ðšðœââ€ïžâðâðšð»|ðšðœââ€ïžâðâðšðŒ|ðšðœââ€ïžâðâðšðœ|ðšðœââ€ïžâðâðšðŸ|ðšðœââ€ïžâðâðšð¿|ðšðŸââ€ïžâðâðšð»|ðšðŸââ€ïžâðâðšðŒ|ðšðŸââ€ïžâðâðšðœ|ðšðŸââ€ïžâðâðšðŸ|ðšðŸââ€ïžâðâðšð¿|ðšð¿ââ€ïžâðâðšð»|ðšð¿ââ€ïžâðâðšðŒ|ðšð¿ââ€ïžâðâðšðœ|ðšð¿ââ€ïžâðâðšðŸ|ðšð¿ââ€ïžâðâðšð¿|ð©ð»ââ€ïžâðâð©ð»|ð©ð»ââ€ïžâðâð©ðŒ|ð©ð»ââ€ïžâðâð©ðœ|ð©ð»ââ€ïžâðâð©ðŸ|ð©ð»ââ€ïžâðâð©ð¿|ð©ðŒââ€ïžâðâð©ð»|ð©ðŒââ€ïžâðâð©ðŒ|ð©ðŒââ€ïžâðâð©ðœ|ð©ðŒââ€ïžâðâð©ðŸ|ð©ðŒââ€ïžâðâð©ð¿|ð©ðœââ€ïžâðâð©ð»|ð©ðœââ€ïžâðâð©ðŒ|ð©ðœââ€ïžâðâð©ðœ|ð©ðœââ€ïžâðâð©ðŸ|ð©ðœââ€ïžâðâð©ð¿|ð©ðŸââ€ïžâðâð©ð»|ð©ðŸââ€ïžâðâð©ðŒ|ð©ðŸââ€ïžâðâð©ðœ|ð©ðŸââ€ïžâðâð©ðŸ|ð©ðŸââ€ïžâðâð©ð¿|ð©ð¿ââ€ïžâðâð©ð»|ð©ð¿ââ€ïžâðâð©ðŒ|ð©ð¿ââ€ïžâðâð©ðœ|ð©ð¿ââ€ïžâðâð©ðŸ|ð©ð¿ââ€ïžâðâð©ð¿|ðŽó §ó ¢ó ¥ó ®ó §ó ¿|ðŽó §ó ¢ó ³ó £ó Žó ¿|ðŽó §ó ¢ó ·ó ¬ó ³ó ¿|ð§ð»âð€âð§ð»|ð§ð»âð€âð§ðŒ|ð§ð»âð€âð§ðœ|ð§ð»âð€âð§ðŸ|ð§ð»âð€âð§ð¿|ð§ðŒâð€âð§ð»|ð§ðŒâð€âð§ðŒ|ð§ðŒâð€âð§ðœ|ð§ðŒâð€âð§ðŸ|ð§ðŒâð€âð§ð¿|ð§ðœâð€âð§ð»|ð§ðœâð€âð§ðŒ|ð§ðœâð€âð§ðœ|ð§ðœâð€âð§ðŸ|ð§ðœâð€âð§ð¿|ð§ðŸâð€âð§ð»|ð§ðŸâð€âð§ðŒ|ð§ðŸâð€âð§ðœ|ð§ðŸâð€âð§ðŸ|ð§ðŸâð€âð§ð¿|ð§ð¿âð€âð§ð»|ð§ð¿âð€âð§ðŒ|ð§ð¿âð€âð§ðœ|ð§ð¿âð€âð§ðŸ|ð§ð¿âð€âð§ð¿|ð©ð»âð€âð©ðŒ|ð©ð»âð€âð©ðœ|ð©ð»âð€âð©ðŸ|ð©ð»âð€âð©ð¿|ð©ðŒâð€âð©ð»|ð©ðŒâð€âð©ðœ|ð©ðŒâð€âð©ðŸ|ð©ðŒâð€âð©ð¿|ð©ðœâð€âð©ð»|ð©ðœâð€âð©ðŒ|ð©ðœâð€âð©ðŸ|ð©ðœâð€âð©ð¿|ð©ðŸâð€âð©ð»|ð©ðŸâð€âð©ðŒ|ð©ðŸâð€âð©ðœ|ð©ðŸâð€âð©ð¿|ð©ð¿âð€âð©ð»|ð©ð¿âð€âð©ðŒ|ð©ð¿âð€âð©ðœ|ð©ð¿âð€âð©ðŸ|ð©ð»âð€âðšðŒ|ð©ð»âð€âðšðœ|ð©ð»âð€âðšðŸ|ð©ð»âð€âðšð¿|ð©ðŒâð€âðšð»|ð©ðŒâð€âðšðœ|ð©ðŒâð€âðšðŸ|ð©ðŒâð€âðšð¿|ð©ðœâð€âðšð»|ð©ðœâð€âðšðŒ|ð©ðœâð€âðšðŸ|ð©ðœâð€âðšð¿|ð©ðŸâð€âðšð»|ð©ðŸâð€âðšðŒ|ð©ðŸâð€âðšðœ|ð©ðŸâð€âðšð¿|ð©ð¿âð€âðšð»|ð©ð¿âð€âðšðŒ|ð©ð¿âð€âðšðœ|ð©ð¿âð€âðšðŸ|ðšð»âð€âðšðŒ|ðšð»âð€âðšðœ|ðšð»âð€âðšðŸ|ðšð»âð€âðšð¿|ðšðŒâð€âðšð»|ðšðŒâð€âðšðœ|ðšðŒâð€âðšðŸ|ðšðŒâð€âðšð¿|ðšðœâð€âðšð»|ðšðœâð€âðšðŒ|ðšðœâð€âðšðŸ|ðšðœâð€âðšð¿|ðšðŸâð€âðšð»|ðšðŸâð€âðšðŒ|ðšðŸâð€âðšðœ|ðšðŸâð€âðšð¿|ðšð¿âð€âðšð»|ðšð¿âð€âðšðŒ|ðšð¿âð€âðšðœ|ðšð¿âð€âðšðŸ|ð§ð»ââ€ïžâð§ðŒ|ð§ð»ââ€ïžâð§ðœ|ð§ð»ââ€ïžâð§ðŸ|ð§ð»ââ€ïžâð§ð¿|ð§ðŒââ€ïžâð§ð»|ð§ðŒââ€ïžâð§ðœ|ð§ðŒââ€ïžâð§ðŸ|ð§ðŒââ€ïžâð§ð¿|ð§ðœââ€ïžâð§ð»|ð§ðœââ€ïžâð§ðŒ|ð§ðœââ€ïžâð§ðŸ|ð§ðœââ€ïžâð§ð¿|ð§ðŸââ€ïžâð§ð»|ð§ðŸââ€ïžâð§ðŒ|ð§ðŸââ€ïžâð§ðœ|ð§ðŸââ€ïžâð§ð¿|ð§ð¿ââ€ïžâð§ð»|ð§ð¿ââ€ïžâð§ðŒ|ð§ð¿ââ€ïžâð§ðœ|ð§ð¿ââ€ïžâð§ðŸ|ð©ð»ââ€ïžâðšð»|ð©ð»ââ€ïžâðšðŒ|ð©ð»ââ€ïžâðšðœ|ð©ð»ââ€ïžâðšðŸ|ð©ð»ââ€ïžâðšð¿|ð©ðŒââ€ïžâðšð»|ð©ðŒââ€ïžâðšðŒ|ð©ðŒââ€ïžâðšðœ|ð©ðŒââ€ïžâðšðŸ|ð©ðŒââ€ïžâðšð¿|ð©ðœââ€ïžâðšð»|ð©ðœââ€ïžâðšðŒ|ð©ðœââ€ïžâðšðœ|ð©ðœââ€ïžâðšðŸ|ð©ðœââ€ïžâðšð¿|ð©ðŸââ€ïžâðšð»|ð©ðŸââ€ïžâðšðŒ|ð©ðŸââ€ïžâðšðœ|ð©ðŸââ€ïžâðšðŸ|ð©ðŸââ€ïžâðšð¿|ð©ð¿ââ€ïžâðšð»|ð©ð¿ââ€ïžâðšðŒ|ð©ð¿ââ€ïžâðšðœ|ð©ð¿ââ€ïžâðšðŸ|ð©ð¿ââ€ïžâðšð¿|ðšð»ââ€ïžâðšð»|ðšð»ââ€ïžâðšðŒ|ðšð»ââ€ïžâðšðœ|ðšð»ââ€ïžâðšðŸ|ðšð»ââ€ïžâðšð¿|ðšðŒââ€ïžâðšð»|ðšðŒââ€ïžâðšðŒ|ðšðŒââ€ïžâðšðœ|ðšðŒââ€ïžâðšðŸ|ðšðŒââ€ïžâðšð¿|ðšðœââ€ïžâðšð»|ðšðœââ€ïžâðšðŒ|ðšðœââ€ïžâðšðœ|ðšðœââ€ïžâðšðŸ|ðšðœââ€ïžâðšð¿|ðšðŸââ€ïžâðšð»|ðšðŸââ€ïžâðšðŒ|ðšðŸââ€ïžâðšðœ|ðšðŸââ€ïžâðšðŸ|ðšðŸââ€ïžâðšð¿|ðšð¿ââ€ïžâðšð»|ðšð¿ââ€ïžâðšðŒ|ðšð¿ââ€ïžâðšðœ|ðšð¿ââ€ïžâðšðŸ|ðšð¿ââ€ïžâðšð¿|ð©ð»ââ€ïžâð©ð»|ð©ð»ââ€ïžâð©ðŒ|ð©ð»ââ€ïžâð©ðœ|ð©ð»ââ€ïžâð©ðŸ|ð©ð»ââ€ïžâð©ð¿|ð©ðŒââ€ïžâð©ð»|ð©ðŒââ€ïžâð©ðŒ|ð©ðŒââ€ïžâð©ðœ|ð©ðŒââ€ïžâð©ðŸ|ð©ðŒââ€ïžâð©ð¿|ð©ðœââ€ïžâð©ð»|ð©ðœââ€ïžâð©ðŒ|ð©ðœââ€ïžâð©ðœ|ð©ðœââ€ïžâð©ðŸ|ð©ðœââ€ïžâð©ð¿|ð©ðŸââ€ïžâð©ð»|ð©ðŸââ€ïžâð©ðŒ|ð©ðŸââ€ïžâð©ðœ|ð©ðŸââ€ïžâð©ðŸ|ð©ðŸââ€ïžâð©ð¿|ð©ð¿ââ€ïžâð©ð»|ð©ð¿ââ€ïžâð©ðŒ|ð©ð¿ââ€ïžâð©ðœ|ð©ð¿ââ€ïžâð©ðŸ|ð©ð¿ââ€ïžâð©ð¿|ð©ââ€ïžâðâðš|ðšââ€ïžâðâðš|ð©ââ€ïžâðâð©|ðšâð©âð§âðŠ|ðšâð©âðŠâðŠ|ðšâð©âð§âð§|ðšâðšâð§âðŠ|ðšâðšâðŠâðŠ|ðšâðšâð§âð§|ð©âð©âð§âðŠ|ð©âð©âðŠâðŠ|ð©âð©âð§âð§|ð§âð€âð§|ð©ââ€ïžâðš|ðšââ€ïžâðš|ð©ââ€ïžâð©|ðšâð©âðŠ|ðšâð©âð§|ðšâðšâðŠ|ðšâðšâð§|ð©âð©âðŠ|ð©âð©âð§|ðšâðŠâðŠ|ðšâð§âðŠ|ðšâð§âð§|ð©âðŠâðŠ|ð©âð§âðŠ|ð©âð§âð§|ðïžâðšïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ðšð»âðŠ°|ðšðŒâðŠ°|ðšðœâðŠ°|ðšðŸâðŠ°|ðšð¿âðŠ°|ðšð»âðŠ±|ðšðŒâðŠ±|ðšðœâðŠ±|ðšðŸâðŠ±|ðšð¿âðŠ±|ðšð»âðŠ³|ðšðŒâðŠ³|ðšðœâðŠ³|ðšðŸâðŠ³|ðšð¿âðŠ³|ðšð»âðŠ²|ðšðŒâðŠ²|ðšðœâðŠ²|ðšðŸâðŠ²|ðšð¿âðŠ²|ð©ð»âðŠ°|ð©ðŒâðŠ°|ð©ðœâðŠ°|ð©ðŸâðŠ°|ð©ð¿âðŠ°|ð§ð»âðŠ°|ð§ðŒâðŠ°|ð§ðœâðŠ°|ð§ðŸâðŠ°|ð§ð¿âðŠ°|ð©ð»âðŠ±|ð©ðŒâðŠ±|ð©ðœâðŠ±|ð©ðŸâðŠ±|ð©ð¿âðŠ±|ð§ð»âðŠ±|ð§ðŒâðŠ±|ð§ðœâðŠ±|ð§ðŸâðŠ±|ð§ð¿âðŠ±|ð©ð»âðŠ³|ð©ðŒâðŠ³|ð©ðœâðŠ³|ð©ðŸâðŠ³|ð©ð¿âðŠ³|ð§ð»âðŠ³|ð§ðŒâðŠ³|ð§ðœâðŠ³|ð§ðŸâðŠ³|ð§ð¿âðŠ³|ð©ð»âðŠ²|ð©ðŒâðŠ²|ð©ðœâðŠ²|ð©ðŸâðŠ²|ð©ð¿âðŠ²|ð§ð»âðŠ²|ð§ðŒâðŠ²|ð§ðœâðŠ²|ð§ðŸâðŠ²|ð§ð¿âðŠ²|ð±ð»ââïž|ð±ðŒââïž|ð±ðœââïž|ð±ðŸââïž|ð±ð¿ââïž|ð±ð»ââïž|ð±ðŒââïž|ð±ðœââïž|ð±ðŸââïž|ð±ð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ð
ð»ââïž|ð
ðŒââïž|ð
ðœââïž|ð
ðŸââïž|ð
ð¿ââïž|ð
ð»ââïž|ð
ðŒââïž|ð
ðœââïž|ð
ðŸââïž|ð
ð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ð€Šð»ââïž|ð€ŠðŒââïž|ð€Šðœââïž|ð€ŠðŸââïž|ð€Šð¿ââïž|ð€Šð»ââïž|ð€ŠðŒââïž|ð€Šðœââïž|ð€ŠðŸââïž|ð€Šð¿ââïž|ð€·ð»ââïž|ð€·ðŒââïž|ð€·ðœââïž|ð€·ðŸââïž|ð€·ð¿ââïž|ð€·ð»ââïž|ð€·ðŒââïž|ð€·ðœââïž|ð€·ðŸââïž|ð€·ð¿ââïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ðšð»ââïž|ðšðŒââïž|ðšðœââïž|ðšðŸââïž|ðšð¿ââïž|ð©ð»ââïž|ð©ðŒââïž|ð©ðœââïž|ð©ðŸââïž|ð©ð¿ââïž|ð§ð»âð|ð§ðŒâð|ð§ðœâð|ð§ðŸâð|ð§ð¿âð|ðšð»âð|ðšðŒâð|ðšðœâð|ðšðŸâð|ðšð¿âð|ð©ð»âð|ð©ðŒâð|ð©ðœâð|ð©ðŸâð|ð©ð¿âð|ð§ð»âð«|ð§ðŒâð«|ð§ðœâð«|ð§ðŸâð«|ð§ð¿âð«|ðšð»âð«|ðšðŒâð«|ðšðœâð«|ðšðŸâð«|ðšð¿âð«|ð©ð»âð«|ð©ðŒâð«|ð©ðœâð«|ð©ðŸâð«|ð©ð¿âð«|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ðšð»ââïž|ðšðŒââïž|ðšðœââïž|ðšðŸââïž|ðšð¿ââïž|ð©ð»ââïž|ð©ðŒââïž|ð©ðœââïž|ð©ðŸââïž|ð©ð¿ââïž|ð§ð»âðŸ|ð§ðŒâðŸ|ð§ðœâðŸ|ð§ðŸâðŸ|ð§ð¿âðŸ|ðšð»âðŸ|ðšðŒâðŸ|ðšðœâðŸ|ðšðŸâðŸ|ðšð¿âðŸ|ð©ð»âðŸ|ð©ðŒâðŸ|ð©ðœâðŸ|ð©ðŸâðŸ|ð©ð¿âðŸ|ð§ð»âð³|ð§ðŒâð³|ð§ðœâð³|ð§ðŸâð³|ð§ð¿âð³|ðšð»âð³|ðšðŒâð³|ðšðœâð³|ðšðŸâð³|ðšð¿âð³|ð©ð»âð³|ð©ðŒâð³|ð©ðœâð³|ð©ðŸâð³|ð©ð¿âð³|ð§ð»âð§|ð§ðŒâð§|ð§ðœâð§|ð§ðŸâð§|ð§ð¿âð§|ðšð»âð§|ðšðŒâð§|ðšðœâð§|ðšðŸâð§|ðšð¿âð§|ð©ð»âð§|ð©ðŒâð§|ð©ðœâð§|ð©ðŸâð§|ð©ð¿âð§|ð§ð»âð|ð§ðŒâð|ð§ðœâð|ð§ðŸâð|ð§ð¿âð|ðšð»âð|ðšðŒâð|ðšðœâð|ðšðŸâð|ðšð¿âð|ð©ð»âð|ð©ðŒâð|ð©ðœâð|ð©ðŸâð|ð©ð¿âð|ð§ð»âðŒ|ð§ðŒâðŒ|ð§ðœâðŒ|ð§ðŸâðŒ|ð§ð¿âðŒ|ðšð»âðŒ|ðšðŒâðŒ|ðšðœâðŒ|ðšðŸâðŒ|ðšð¿âðŒ|ð©ð»âðŒ|ð©ðŒâðŒ|ð©ðœâðŒ|ð©ðŸâðŒ|ð©ð¿âðŒ|ð§ð»âð¬|ð§ðŒâð¬|ð§ðœâð¬|ð§ðŸâð¬|ð§ð¿âð¬|ðšð»âð¬|ðšðŒâð¬|ðšðœâð¬|ðšðŸâð¬|ðšð¿âð¬|ð©ð»âð¬|ð©ðŒâð¬|ð©ðœâð¬|ð©ðŸâð¬|ð©ð¿âð¬|ð§ð»âð»|ð§ðŒâð»|ð§ðœâð»|ð§ðŸâð»|ð§ð¿âð»|ðšð»âð»|ðšðŒâð»|ðšðœâð»|ðšðŸâð»|ðšð¿âð»|ð©ð»âð»|ð©ðŒâð»|ð©ðœâð»|ð©ðŸâð»|ð©ð¿âð»|ð§ð»âð€|ð§ðŒâð€|ð§ðœâð€|ð§ðŸâð€|ð§ð¿âð€|ðšð»âð€|ðšðŒâð€|ðšðœâð€|ðšðŸâð€|ðšð¿âð€|ð©ð»âð€|ð©ðŒâð€|ð©ðœâð€|ð©ðŸâð€|ð©ð¿âð€|ð§ð»âðš|ð§ðŒâðš|ð§ðœâðš|ð§ðŸâðš|ð§ð¿âðš|ðšð»âðš|ðšðŒâðš|ðšðœâðš|ðšðŸâðš|ðšð¿âðš|ð©ð»âðš|ð©ðŒâðš|ð©ðœâðš|ð©ðŸâðš|ð©ð¿âðš|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ðšð»ââïž|ðšðŒââïž|ðšðœââïž|ðšðŸââïž|ðšð¿ââïž|ð©ð»ââïž|ð©ðŒââïž|ð©ðœââïž|ð©ðŸââïž|ð©ð¿ââïž|ð§ð»âð|ð§ðŒâð|ð§ðœâð|ð§ðŸâð|ð§ð¿âð|ðšð»âð|ðšðŒâð|ðšðœâð|ðšðŸâð|ðšð¿âð|ð©ð»âð|ð©ðŒâð|ð©ðœâð|ð©ðŸâð|ð©ð¿âð|ð§ð»âð|ð§ðŒâð|ð§ðœâð|ð§ðŸâð|ð§ð¿âð|ðšð»âð|ðšðŒâð|ðšðœâð|ðšðŸâð|ðšð¿âð|ð©ð»âð|ð©ðŒâð|ð©ðœâð|ð©ðŸâð|ð©ð¿âð|ð®ð»ââïž|ð®ðŒââïž|ð®ðœââïž|ð®ðŸââïž|ð®ð¿ââïž|ð®ð»ââïž|ð®ðŒââïž|ð®ðœââïž|ð®ðŸââïž|ð®ð¿ââïž|ðµð»ââïž|ðµðŒââïž|ðµðœââïž|ðµðŸââïž|ðµð¿ââïž|ðµð»ââïž|ðµðŒââïž|ðµðœââïž|ðµðŸââïž|ðµð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ð·ð»ââïž|ð·ðŒââïž|ð·ðœââïž|ð·ðŸââïž|ð·ð¿ââïž|ð·ð»ââïž|ð·ðŒââïž|ð·ðœââïž|ð·ðŸââïž|ð·ð¿ââïž|ð³ð»ââïž|ð³ðŒââïž|ð³ðœââïž|ð³ðŸââïž|ð³ð¿ââïž|ð³ð»ââïž|ð³ðŒââïž|ð³ðœââïž|ð³ðŸââïž|ð³ð¿ââïž|ð€µð»ââïž|ð€µðŒââïž|ð€µðœââïž|ð€µðŸââïž|ð€µð¿ââïž|ð€µð»ââïž|ð€µðŒââïž|ð€µðœââïž|ð€µðŸââïž|ð€µð¿ââïž|ð°ð»ââïž|ð°ðŒââïž|ð°ðœââïž|ð°ðŸââïž|ð°ð¿ââïž|ð°ð»ââïž|ð°ðŒââïž|ð°ðœââïž|ð°ðŸââïž|ð°ð¿ââïž|ð©ð»âðŒ|ð©ðŒâðŒ|ð©ðœâðŒ|ð©ðŸâðŒ|ð©ð¿âðŒ|ðšð»âðŒ|ðšðŒâðŒ|ðšðœâðŒ|ðšðŸâðŒ|ðšð¿âðŒ|ð§ð»âðŒ|ð§ðŒâðŒ|ð§ðœâðŒ|ð§ðŸâðŒ|ð§ð¿âðŒ|ð§ð»âð|ð§ðŒâð|ð§ðœâð|ð§ðŸâð|ð§ð¿âð|ðŠžð»ââïž|ðŠžðŒââïž|ðŠžðœââïž|ðŠžðŸââïž|ðŠžð¿ââïž|ðŠžð»ââïž|ðŠžðŒââïž|ðŠžðœââïž|ðŠžðŸââïž|ðŠžð¿ââïž|ðŠ¹ð»ââïž|ðŠ¹ðŒââïž|ðŠ¹ðœââïž|ðŠ¹ðŸââïž|ðŠ¹ð¿ââïž|ðŠ¹ð»ââïž|ðŠ¹ðŒââïž|ðŠ¹ðœââïž|ðŠ¹ðŸââïž|ðŠ¹ð¿ââïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ð¶ð»ââïž|ð¶ðŒââïž|ð¶ðœââïž|ð¶ðŸââïž|ð¶ð¿ââïž|ð¶ð»ââïž|ð¶ðŒââïž|ð¶ðœââïž|ð¶ðŸââïž|ð¶ð¿ââïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ð§ð»âðŠ¯|ð§ðŒâðŠ¯|ð§ðœâðŠ¯|ð§ðŸâðŠ¯|ð§ð¿âðŠ¯|ðšð»âðŠ¯|ðšðŒâðŠ¯|ðšðœâðŠ¯|ðšðŸâðŠ¯|ðšð¿âðŠ¯|ð©ð»âðŠ¯|ð©ðŒâðŠ¯|ð©ðœâðŠ¯|ð©ðŸâðŠ¯|ð©ð¿âðŠ¯|ð§ð»âðŠŒ|ð§ðŒâðŠŒ|ð§ðœâðŠŒ|ð§ðŸâðŠŒ|ð§ð¿âðŠŒ|ðšð»âðŠŒ|ðšðŒâðŠŒ|ðšðœâðŠŒ|ðšðŸâðŠŒ|ðšð¿âðŠŒ|ð©ð»âðŠŒ|ð©ðŒâðŠŒ|ð©ðœâðŠŒ|ð©ðŸâðŠŒ|ð©ð¿âðŠŒ|ð§ð»âðŠœ|ð§ðŒâðŠœ|ð§ðœâðŠœ|ð§ðŸâðŠœ|ð§ð¿âðŠœ|ðšð»âðŠœ|ðšðŒâðŠœ|ðšðœâðŠœ|ðšðŸâðŠœ|ðšð¿âðŠœ|ð©ð»âðŠœ|ð©ðŒâðŠœ|ð©ðœâðŠœ|ð©ðŸâðŠœ|ð©ð¿âðŠœ|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ð£ð»ââïž|ð£ðŒââïž|ð£ðœââïž|ð£ðŸââïž|ð£ð¿ââïž|ð£ð»ââïž|ð£ðŒââïž|ð£ðœââïž|ð£ðŸââïž|ð£ð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ðð»ââïž|ððŒââïž|ððœââïž|ððŸââïž|ðð¿ââïž|ðŽð»ââïž|ðŽðŒââïž|ðŽðœââïž|ðŽðŸââïž|ðŽð¿ââïž|ðŽð»ââïž|ðŽðŒââïž|ðŽðœââïž|ðŽðŸââïž|ðŽð¿ââïž|ðµð»ââïž|ðµðŒââïž|ðµðœââïž|ðµðŸââïž|ðµð¿ââïž|ðµð»ââïž|ðµðŒââïž|ðµðœââïž|ðµðŸââïž|ðµð¿ââïž|ð€žð»ââïž|ð€žðŒââïž|ð€žðœââïž|ð€žðŸââïž|ð€žð¿ââïž|ð€žð»ââïž|ð€žðŒââïž|ð€žðœââïž|ð€žðŸââïž|ð€žð¿ââïž|ð€œð»ââïž|ð€œðŒââïž|ð€œðœââïž|ð€œðŸââïž|ð€œð¿ââïž|ð€œð»ââïž|ð€œðŒââïž|ð€œðœââïž|ð€œðŸââïž|ð€œð¿ââïž|ð€Ÿð»ââïž|ð€ŸðŒââïž|ð€Ÿðœââïž|ð€ŸðŸââïž|ð€Ÿð¿ââïž|ð€Ÿð»ââïž|ð€ŸðŒââïž|ð€Ÿðœââïž|ð€ŸðŸââïž|ð€Ÿð¿ââïž|ð€¹ð»ââïž|ð€¹ðŒââïž|ð€¹ðœââïž|ð€¹ðŸââïž|ð€¹ð¿ââïž|ð€¹ð»ââïž|ð€¹ðŒââïž|ð€¹ðœââïž|ð€¹ðŸââïž|ð€¹ð¿ââïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ð§ð»ââïž|ð§ðŒââïž|ð§ðœââïž|ð§ðŸââïž|ð§ð¿ââïž|ð¶âð«ïž|ðµïžââïž|ðµïžââïž|ðïžââïž|ðïžââïž|ðïžââïž|ðïžââïž|ð³ïžâð|ð³ïžââ§ïž|â¹ð»ââïž|â¹ðŒââïž|â¹ðœââïž|â¹ðŸââïž|â¹ð¿ââïž|â¹ð»ââïž|â¹ðŒââïž|â¹ðœââïž|â¹ðŸââïž|â¹ð¿ââïž|ð®âðš|ðµâð«|â€ïžâð¥|â€ïžâð©¹|ð§ââïž|ð§ââïž|ðšâðŠ°|ðšâðŠ±|ðšâðŠ³|ðšâðŠ²|ð©âðŠ°|ð§âðŠ°|ð©âðŠ±|ð§âðŠ±|ð©âðŠ³|ð§âðŠ³|ð©âðŠ²|ð§âðŠ²|ð±ââïž|ð±ââïž|ðââïž|ðââïž|ðââïž|ðââïž|ð
ââïž|ð
ââïž|ðââïž|ðââïž|ðââïž|ðââïž|ðââïž|ðââïž|ð§ââïž|ð§ââïž|ðââïž|ðââïž|ð€Šââïž|ð€Šââïž|ð€·ââïž|ð€·ââïž|ð§ââïž|ðšââïž|ð©ââïž|ð§âð|ðšâð|ð©âð|ð§âð«|ðšâð«|ð©âð«|ð§ââïž|ðšââïž|ð©ââïž|ð§âðŸ|ðšâðŸ|ð©âðŸ|ð§âð³|ðšâð³|ð©âð³|ð§âð§|ðšâð§|ð©âð§|ð§âð|ðšâð|ð©âð|ð§âðŒ|ðšâðŒ|ð©âðŒ|ð§âð¬|ðšâð¬|ð©âð¬|ð§âð»|ðšâð»|ð©âð»|ð§âð€|ðšâð€|ð©âð€|ð§âðš|ðšâðš|ð©âðš|ð§ââïž|ðšââïž|ð©ââïž|ð§âð|ðšâð|ð©âð|ð§âð|ðšâð|ð©âð|ð®ââïž|ð®ââïž|ðââïž|ðââïž|ð·ââïž|ð·ââïž|ð³ââïž|ð³ââïž|ð€µââïž|ð€µââïž|ð°ââïž|ð°ââïž|ð©âðŒ|ðšâðŒ|ð§âðŒ|ð§âð|ðŠžââïž|ðŠžââïž|ðŠ¹ââïž|ðŠ¹ââïž|ð§ââïž|ð§ââïž|ð§ââïž|ð§ââïž|ð§ââïž|ð§ââïž|ð§ââïž|ð§ââïž|ð§ââïž|ð§ââïž|ð§ââïž|ð§ââïž|ð§ââïž|ð§ââïž|ðââïž|ðââïž|ðââïž|ðââïž|ð¶ââïž|ð¶ââïž|ð§ââïž|ð§ââïž|ð§ââïž|ð§ââïž|ð§âðŠ¯|ðšâðŠ¯|ð©âðŠ¯|ð§âðŠŒ|ðšâðŠŒ|ð©âðŠŒ|ð§âðŠœ|ðšâðŠœ|ð©âðŠœ|ðââïž|ðââïž|ð¯ââïž|ð¯ââïž|ð§ââïž|ð§ââïž|ð§ââïž|ð§ââïž|ðââïž|ðââïž|ð£ââïž|ð£ââïž|ðââïž|ðââïž|â¹ïžââïž|â¹ïžââïž|ðŽââïž|ðŽââïž|ðµââïž|ðµââïž|ð€žââïž|ð€žââïž|ð€Œââïž|ð€Œââïž|ð€œââïž|ð€œââïž|ð€Ÿââïž|ð€Ÿââïž|ð€¹ââïž|ð€¹ââïž|ð§ââïž|ð§ââïž|ðšâðŠ|ðšâð§|ð©âðŠ|ð©âð§|ðâðŠº|ð»ââïž|ðŽââ ïž|ðââ¬|ðŠðš|ðŠð©|ðŠðª|ðŠð«|ðŠð¬|ðŠð®|ðŠð±|ðŠð²|ðŠðŽ|ðŠð¶|ðŠð·|ðŠðž|ðŠð¹|ðŠðº|ðŠðŒ|ðŠðœ|ðŠð¿|ð§ðŠ|ð§ð§|ð§ð©|ð§ðª|ð§ð«|ð§ð¬|ð§ð|ð§ð®|ð§ð¯|ð§ð±|ð§ð²|ð§ð³|ð§ðŽ|ð§ð¶|ð§ð·|ð§ðž|ð§ð¹|ð§ð»|ð§ðŒ|ð§ðŸ|ð§ð¿|ðšðŠ|ðšðš|ðšð©|ðšð«|ðšð¬|ðšð|ðšð®|ðšð°|ðšð±|ðšð²|ðšð³|ðšðŽ|ðšðµ|ðšð·|ðšðº|ðšð»|ðšðŒ|ðšðœ|ðšðŸ|ðšð¿|ð©ðª|ð©ð¬|ð©ð¯|ð©ð°|ð©ð²|ð©ðŽ|ð©ð¿|ðªðŠ|ðªðš|ðªðª|ðªð¬|ðªð|ðªð·|ðªðž|ðªð¹|ðªðº|ð«ð®|ð«ð¯|ð«ð°|ð«ð²|ð«ðŽ|ð«ð·|ð¬ðŠ|ð¬ð§|ð¬ð©|ð¬ðª|ð¬ð«|ð¬ð¬|ð¬ð|ð¬ð®|ð¬ð±|ð¬ð²|ð¬ð³|ð¬ðµ|ð¬ð¶|ð¬ð·|ð¬ðž|ð¬ð¹|ð¬ðº|ð¬ðŒ|ð¬ðŸ|ðð°|ðð²|ðð³|ðð·|ðð¹|ððº|ð®ðš|ð®ð©|ð®ðª|ð®ð±|ð®ð²|ð®ð³|ð®ðŽ|ð®ð¶|ð®ð·|ð®ðž|ð®ð¹|ð¯ðª|ð¯ð²|ð¯ðŽ|ð¯ðµ|ð°ðª|ð°ð¬|ð°ð|ð°ð®|ð°ð²|ð°ð³|ð°ðµ|ð°ð·|ð°ðŒ|ð°ðŸ|ð°ð¿|ð±ðŠ|ð±ð§|ð±ðš|ð±ð®|ð±ð°|ð±ð·|ð±ðž|ð±ð¹|ð±ðº|ð±ð»|ð±ðŸ|ð²ðŠ|ð²ðš|ð²ð©|ð²ðª|ð²ð«|ð²ð¬|ð²ð|ð²ð°|ð²ð±|ð²ð²|ð²ð³|ð²ðŽ|ð²ðµ|ð²ð¶|ð²ð·|ð²ðž|ð²ð¹|ð²ðº|ð²ð»|ð²ðŒ|ð²ðœ|ð²ðŸ|ð²ð¿|ð³ðŠ|ð³ðš|ð³ðª|ð³ð«|ð³ð¬|ð³ð®|ð³ð±|ð³ðŽ|ð³ðµ|ð³ð·|ð³ðº|ð³ð¿|ðŽð²|ðµðŠ|ðµðª|ðµð«|ðµð¬|ðµð|ðµð°|ðµð±|ðµð²|ðµð³|ðµð·|ðµðž|ðµð¹|ðµðŒ|ðµðŸ|ð¶ðŠ|ð·ðª|ð·ðŽ|ð·ðž|ð·ðº|ð·ðŒ|ðžðŠ|ðžð§|ðžðš|ðžð©|ðžðª|ðžð¬|ðžð|ðžð®|ðžð¯|ðžð°|ðžð±|ðžð²|ðžð³|ðžðŽ|ðžð·|ðžðž|ðžð¹|ðžð»|ðžðœ|ðžðŸ|ðžð¿|ð¹ðŠ|ð¹ðš|ð¹ð©|ð¹ð«|ð¹ð¬|ð¹ð|ð¹ð¯|ð¹ð°|ð¹ð±|ð¹ð²|ð¹ð³|ð¹ðŽ|ð¹ð·|ð¹ð¹|ð¹ð»|ð¹ðŒ|ð¹ð¿|ðºðŠ|ðºð¬|ðºð²|ðºð³|ðºðž|ðºðŸ|ðºð¿|ð»ðŠ|ð»ðš|ð»ðª|ð»ð¬|ð»ð®|ð»ð³|ð»ðº|ðŒð«|ðŒðž|ðœð°|ðŸðª|ðŸð¹|ð¿ðŠ|ð¿ð²|ð¿ðŒ|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ð€ð»|ð€ðŒ|ð€ðœ|ð€ðŸ|ð€ð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ð€ð»|ð€ðŒ|ð€ðœ|ð€ðŸ|ð€ð¿|ð€ð»|ð€ðŒ|ð€ðœ|ð€ðŸ|ð€ð¿|ð€ð»|ð€ðŒ|ð€ðœ|ð€ðŸ|ð€ð¿|ð€ð»|ð€ðŒ|ð€ðœ|ð€ðŸ|ð€ð¿|ð€ð»|ð€ðŒ|ð€ðœ|ð€ðŸ|ð€ð¿|ð€ð»|ð€ðŒ|ð€ðœ|ð€ðŸ|ð€ð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ð€ð»|ð€ðŒ|ð€ðœ|ð€ðŸ|ð€ð¿|ð€ð»|ð€ðŒ|ð€ðœ|ð€ðŸ|ð€ð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ð€²ð»|ð€²ðŒ|ð€²ðœ|ð€²ðŸ|ð€²ð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ð
ð»|ð
ðŒ|ð
ðœ|ð
ðŸ|ð
ð¿|ð€³ð»|ð€³ðŒ|ð€³ðœ|ð€³ðŸ|ð€³ð¿|ðªð»|ðªðŒ|ðªðœ|ðªðŸ|ðªð¿|ðŠµð»|ðŠµðŒ|ðŠµðœ|ðŠµðŸ|ðŠµð¿|ðŠ¶ð»|ðŠ¶ðŒ|ðŠ¶ðœ|ðŠ¶ðŸ|ðŠ¶ð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðŠ»ð»|ðŠ»ðŒ|ðŠ»ðœ|ðŠ»ðŸ|ðŠ»ð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ð¶ð»|ð¶ðŒ|ð¶ðœ|ð¶ðŸ|ð¶ð¿|ð§ð»|ð§ðŒ|ð§ðœ|ð§ðŸ|ð§ð¿|ðŠð»|ðŠðŒ|ðŠðœ|ðŠðŸ|ðŠð¿|ð§ð»|ð§ðŒ|ð§ðœ|ð§ðŸ|ð§ð¿|ð§ð»|ð§ðŒ|ð§ðœ|ð§ðŸ|ð§ð¿|ð±ð»|ð±ðŒ|ð±ðœ|ð±ðŸ|ð±ð¿|ðšð»|ðšðŒ|ðšðœ|ðšðŸ|ðšð¿|ð§ð»|ð§ðŒ|ð§ðœ|ð§ðŸ|ð§ð¿|ð©ð»|ð©ðŒ|ð©ðœ|ð©ðŸ|ð©ð¿|ð§ð»|ð§ðŒ|ð§ðœ|ð§ðŸ|ð§ð¿|ðŽð»|ðŽðŒ|ðŽðœ|ðŽðŸ|ðŽð¿|ðµð»|ðµðŒ|ðµðœ|ðµðŸ|ðµð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ð
ð»|ð
ðŒ|ð
ðœ|ð
ðŸ|ð
ð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ð§ð»|ð§ðŒ|ð§ðœ|ð§ðŸ|ð§ð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ð€Šð»|ð€ŠðŒ|ð€Šðœ|ð€ŠðŸ|ð€Šð¿|ð€·ð»|ð€·ðŒ|ð€·ðœ|ð€·ðŸ|ð€·ð¿|ð®ð»|ð®ðŒ|ð®ðœ|ð®ðŸ|ð®ð¿|ðµð»|ðµðŒ|ðµðœ|ðµðŸ|ðµð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ð¥·ð»|ð¥·ðŒ|ð¥·ðœ|ð¥·ðŸ|ð¥·ð¿|ð·ð»|ð·ðŒ|ð·ðœ|ð·ðŸ|ð·ð¿|ð€Žð»|ð€ŽðŒ|ð€Žðœ|ð€ŽðŸ|ð€Žð¿|ðžð»|ðžðŒ|ðžðœ|ðžðŸ|ðžð¿|ð³ð»|ð³ðŒ|ð³ðœ|ð³ðŸ|ð³ð¿|ð²ð»|ð²ðŒ|ð²ðœ|ð²ðŸ|ð²ð¿|ð§ð»|ð§ðŒ|ð§ðœ|ð§ðŸ|ð§ð¿|ð€µð»|ð€µðŒ|ð€µðœ|ð€µðŸ|ð€µð¿|ð°ð»|ð°ðŒ|ð°ðœ|ð°ðŸ|ð°ð¿|ð€°ð»|ð€°ðŒ|ð€°ðœ|ð€°ðŸ|ð€°ð¿|ð€±ð»|ð€±ðŒ|ð€±ðœ|ð€±ðŸ|ð€±ð¿|ðŒð»|ðŒðŒ|ðŒðœ|ðŒðŸ|ðŒð¿|ð
ð»|ð
ðŒ|ð
ðœ|ð
ðŸ|ð
ð¿|ð€¶ð»|ð€¶ðŒ|ð€¶ðœ|ð€¶ðŸ|ð€¶ð¿|ðŠžð»|ðŠžðŒ|ðŠžðœ|ðŠžðŸ|ðŠžð¿|ðŠ¹ð»|ðŠ¹ðŒ|ðŠ¹ðœ|ðŠ¹ðŸ|ðŠ¹ð¿|ð§ð»|ð§ðŒ|ð§ðœ|ð§ðŸ|ð§ð¿|ð§ð»|ð§ðŒ|ð§ðœ|ð§ðŸ|ð§ð¿|ð§ð»|ð§ðŒ|ð§ðœ|ð§ðŸ|ð§ð¿|ð§ð»|ð§ðŒ|ð§ðœ|ð§ðŸ|ð§ð¿|ð§ð»|ð§ðŒ|ð§ðœ|ð§ðŸ|ð§ð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ð¶ð»|ð¶ðŒ|ð¶ðœ|ð¶ðŸ|ð¶ð¿|ð§ð»|ð§ðŒ|ð§ðœ|ð§ðŸ|ð§ð¿|ð§ð»|ð§ðŒ|ð§ðœ|ð§ðŸ|ð§ð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðºð»|ðºðŒ|ðºðœ|ðºðŸ|ðºð¿|ðŽð»|ðŽðŒ|ðŽðœ|ðŽðŸ|ðŽð¿|ð§ð»|ð§ðŒ|ð§ðœ|ð§ðŸ|ð§ð¿|ð§ð»|ð§ðŒ|ð§ðœ|ð§ðŸ|ð§ð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ð£ð»|ð£ðŒ|ð£ðœ|ð£ðŸ|ð£ð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðŽð»|ðŽðŒ|ðŽðœ|ðŽðŸ|ðŽð¿|ðµð»|ðµðŒ|ðµðœ|ðµðŸ|ðµð¿|ð€žð»|ð€žðŒ|ð€žðœ|ð€žðŸ|ð€žð¿|ð€œð»|ð€œðŒ|ð€œðœ|ð€œðŸ|ð€œð¿|ð€Ÿð»|ð€ŸðŒ|ð€Ÿðœ|ð€ŸðŸ|ð€Ÿð¿|ð€¹ð»|ð€¹ðŒ|ð€¹ðœ|ð€¹ðŸ|ð€¹ð¿|ð§ð»|ð§ðŒ|ð§ðœ|ð§ðŸ|ð§ð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ð«ð»|ð«ðŒ|ð«ðœ|ð«ðŸ|ð«ð¿|ð¬ð»|ð¬ðŒ|ð¬ðœ|ð¬ðŸ|ð¬ð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|ðð»|ððŒ|ððœ|ððŸ|ðð¿|#ïžâ£|0ïžâ£|1ïžâ£|2ïžâ£|3ïžâ£|4ïžâ£|5ïžâ£|6ïžâ£|7ïžâ£|8ïžâ£|9ïžâ£|âð»|âðŒ|âðœ|âðŸ|âð¿|âð»|âðŒ|âðœ|âðŸ|âð¿|âð»|âðŒ|âðœ|âðŸ|âð¿|âð»|âðŒ|âðœ|âðŸ|âð¿|âð»|âðŒ|âðœ|âðŸ|âð¿|â¹ð»|â¹ðŒ|â¹ðœ|â¹ðŸ|â¹ð¿|ð|ð|ð|ð|ð|ð
|ð€£|ð|ð|ð|ð|ð|ð|ð¥°|ð|ð€©|ð|ð|ð|ð|ð¥²|ð|ð|ð|ð€ª|ð|ð€|ð€|ð€|ð€«|ð€|ð€|ð€š|ð|ð|ð¶|ð|ð|ð|ð¬|ð€¥|ð|ð|ðª|ð€€|ðŽ|ð·|ð€|ð€|ð€¢|ð€®|ð€§|ð¥µ|ð¥¶|ð¥Ž|ðµ|ð€¯|ð€ |ð¥³|ð¥ž|ð|ð€|ð§|ð|ð|ð|ð®|ð¯|ð²|ð³|ð¥º|ðŠ|ð§|ðš|ð°|ð¥|ð¢|ð|ð±|ð|ð£|ð|ð|ð©|ð«|ð¥±|ð€|ð¡|ð |ð€¬|ð|ð¿|ð|ð©|ð€¡|ð¹|ðº|ð»|ðœ|ðŸ|ð€|ðº|ðž|ð¹|ð»|ðŒ|ðœ|ð|ð¿|ðŸ|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð§¡|ð|ð|ð|ð|ð€|ð€|ð€|ð¯|ð¢|ð¥|ð«|ðŠ|ðš|ð³|ð£|ð¬|ðš|ð¯|ð|ð€|ð|ð€|ð|ð|ð|ð€|ð€|ð€|ð€|ð€|ð€|ð|ð|ð|ð|ð|ð|ð|ð|ð€|ð€|ð|ð|ð|ð€²|ð€|ð|ð
|ð€³|ðª|ðŠŸ|ðŠ¿|ðŠµ|ðŠ¶|ð|ðŠ»|ð|ð§ |ð«|ð«|ðŠ·|ðŠŽ|ð|ð|ð
|ð|ð¶|ð§|ðŠ|ð§|ð§|ð±|ðš|ð§|ð©|ð§|ðŽ|ðµ|ð|ð|ð
|ð|ð|ð|ð§|ð|ð€Š|ð€·|ð®|ðµ|ð|ð¥·|ð·|ð€Ž|ðž|ð³|ð²|ð§|ð€µ|ð°|ð€°|ð€±|ðŒ|ð
|ð€¶|ðŠž|ðŠ¹|ð§|ð§|ð§|ð§|ð§|ð§|ð§|ð|ð|ð¶|ð§|ð§|ð|ð|ðº|ðŽ|ð¯|ð§|ð§|ð€º|ð|ð|ð|ð|ð£|ð|ð|ðŽ|ðµ|ð€ž|ð€Œ|ð€œ|ð€Ÿ|ð€¹|ð§|ð|ð|ð|ð«|ð¬|ð|ð|ðª|ð£|ð€|ð¥|ð«|ð£|ðŠ°|ðŠ±|ðŠ³|ðŠ²|ðµ|ð|ðŠ|ðŠ§|ð¶|ð|ðŠ®|ð©|ðº|ðŠ|ðŠ|ð±|ð|ðŠ|ð¯|ð
|ð|ðŽ|ð|ðŠ|ðŠ|ðŠ|ðŠ¬|ð®|ð|ð|ð|ð·|ð|ð|ðœ|ð|ð|ð|ðª|ð«|ðŠ|ðŠ|ð|ðŠ£|ðŠ|ðŠ|ð|ð|ð|ð¹|ð°|ð|ð¿|ðŠ«|ðŠ|ðŠ|ð»|ðš|ðŒ|ðŠ¥|ðŠŠ|ðŠš|ðŠ|ðŠ¡|ðŸ|ðŠ|ð|ð|ð£|ð€|ð¥|ðŠ|ð§|ð|ðŠ
|ðŠ|ðŠ¢|ðŠ|ðŠ€|ðª¶|ðŠ©|ðŠ|ðŠ|ðž|ð|ð¢|ðŠ|ð|ð²|ð|ðŠ|ðŠ|ð³|ð|ð¬|ðŠ|ð|ð |ð¡|ðŠ|ð|ð|ð|ðŠ|ð|ð|ð|ðª²|ð|ðŠ|ðª³|ð·|ðž|ðŠ|ðŠ|ðª°|ðª±|ðŠ |ð|ðž|ð®|ðµ|ð¹|ð¥|ðº|ð»|ðŒ|ð·|ð±|ðªŽ|ð²|ð³|ðŽ|ðµ|ðŸ|ð¿|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð¥|ð|ð|ð|ð|ð|ð|ð«|ð¥|ð
|ð«|ð¥¥|ð¥|ð|ð¥|ð¥|ðœ|ð¶|ð«|ð¥|ð¥¬|ð¥Š|ð§|ð§
|ð|ð¥|ð°|ð|ð¥|ð¥|ð«|ð¥š|ð¥¯|ð¥|ð§|ð§|ð|ð|ð¥©|ð¥|ð|ð|ð|ð|ð¥ª|ð®|ð¯|ð«|ð¥|ð§|ð¥|ð³|ð¥|ð²|ð«|ð¥£|ð¥|ð¿|ð§|ð§|ð¥«|ð±|ð|ð|ð|ð|ð|ð|ð |ð¢|ð£|ð€|ð¥|ð¥®|ð¡|ð¥|ð¥ |ð¥¡|ðŠ|ðŠ|ðŠ|ðŠ|ðŠª|ðŠ|ð§|ðš|ð©|ðª|ð|ð°|ð§|ð¥§|ð«|ð¬|ð|ð®|ð¯|ðŒ|ð¥|ð«|ðµ|ð¶|ðŸ|ð·|ðž|ð¹|ðº|ð»|ð¥|ð¥|ð¥€|ð§|ð§|ð§|ð§|ð¥¢|ðœ|ðŽ|ð¥|ðª|ðº|ð|ð|ð|ð|ðº|ðŸ|ð§|ð|ð|ð»|ð|ð|ð|ð|ð|ð|ð|ð|ð§±|ðªš|ðªµ|ð|ð|ð|ð |ð¡|ð¢|ð£|ð€|ð¥|ðŠ|ðš|ð©|ðª|ð«|ð¬|ð|ð¯|ð°|ð|ðŒ|ðœ|ð|ð|ð|ð|ð|ð|ð|ð|ð
|ð|ð|ð|ð |ð¡|ð¢|ð|ðª|ð|ð|ð|ð
|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð»|ð|ð|ð|ð|ð|ðµ|ðŠœ|ðŠŒ|ðº|ð²|ðŽ|ð¹|ðŒ|ð|ð£|ð€|ð¢|ðš|ð¥|ðŠ|ð|ð§|ð¶|ð€|ð³|ð¥|ð¢|ð©|ð«|ð¬|ðª|ðº|ð|ð|ð |ð¡|ð°|ð|ðž|ð|ð§³|ð°|ð|ð§|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð |ð|ð¡|ð|ð¢|ð|ð£|ð|ð€|ð|ð¥|ð|ðŠ|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð¡|ð|ð|ðª|ð|ð |ð|ð€|ð¥|ðŠ|ð§|ðš|ð©|ðª|ð«|ð¬|ð|ð|ð|ð¥|ð§|ð|ð|ð|ð|ð|ð§š|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð§§|ð|ð|ð|ð|ð«|ð|ð|ð
|ð¥|ð¥|ð¥|ð¥|ð|ð|ð|ð|ðŸ|ð¥|ð³|ð|ð|ð|ð¥|ð|ðž|ð¥|ð¥|ð¥
|ð£|ð€¿|ðœ|ð¿|ð·|ð¥|ð¯|ðª|ðª|ð±|ð®|ðª|ð§¿|ð®|ð¹|ð°|ð²|ð§©|ð§ž|ðª
|ðª|ð|ð|ðŽ|ð|ðŒ|ðš|ð§µ|ðª¡|ð§¶|ðª¢|ð|ð¶|ð¥œ|ð¥Œ|ðŠº|ð|ð|ð|ð§£|ð§€|ð§¥|ð§Š|ð|ð|ð¥»|ð©±|ð©²|ð©³|ð|ð|ð|ð|ð|ð|ð|ð©Ž|ð|ð|ð¥Ÿ|ð¥¿|ð |ð¡|ð©°|ð¢|ð|ð|ð©|ð|ð§¢|ðª|ð¿|ð|ð|ð|ð|ð|ð|ð|ð¢|ð£|ð¯|ð|ð|ðŒ|ðµ|ð¶|ð|ð|ð|ð€|ð§|ð»|ð·|ðª|ðž|ð¹|ðº|ð»|ðª|ð¥|ðª|ð±|ð²|ð|ð|ð |ð|ð|ð»|ð¥|ðš|ð±|ð²|ðœ|ðŸ|ð¿|ð|ð§®|ð¥|ð|ðœ|ð¬|ðº|ð·|ðž|ð¹|ðŒ|ð|ð|ð¯|ð¡|ðŠ|ð®|ðª|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð°|ð|ð|ð|ð·|ð°|ðª|ðŽ|ðµ|ð¶|ð·|ðž|ð³|ð§Ÿ|ð¹|ð§|ðš|ð©|ð€|ð¥|ðŠ|ð«|ðª|ð¬|ð|ð®|ð³|ð|ð|ð|ð|ð|ðŒ|ð|ð|ð|ð
|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ðš|ðª|ð |ð¡|ð«|ðª|ð¹|ð¡|ðª|ð§|ðª|ð©|ð|ðŠ¯|ð|ðª|ð§°|ð§²|ðª|ð§ª|ð§«|ð§¬|ð¬|ð|ð¡|ð|ð©ž|ð|ð©¹|ð©º|ðª|ð|ðª|ðª|ð|ð|ðª|ðœ|ðª |ð¿|ð|ðª€|ðª|ð§Ž|ð§·|ð§¹|ð§º|ð§»|ðª£|ð§Œ|ðª¥|ð§œ|ð§¯|ð|ð¬|ðªŠ|ð¿|ðª§|ð§|ð®|ð°|ð¹|ðº|ð»|ðŒ|ðŸ|ð|ð|ð|ð
|ðž|ð«|ð³|ð|ð¯|ð±|ð·|ðµ|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð|ð¯|ð|ð|ð|ðŒ|ðœ|ðŠ|ð
|ð|ð¶|ð³|ðŽ|ð±|ð²|ð±|ð|ð°|ð|ð |ð¡|ð¢|ð£|ð€|ð
°|ð|ð
±|ð|ð|ð|ð|ð|ð|ð
Ÿ|ð|ð
¿|ð|ð|ð|ð|ð|ð·|ð¶|ð¯|ð|ð¹|ð|ð²|ð|ðž|ðŽ|ð³|ðº|ðµ|ðŽ|ð |ð¡|ð¢|ðµ|ð£|ð€|ð¥|ð§|ðš|ð©|ðŠ|ðª|ð«|ð¶|ð·|ðž|ð¹|ðº|ð»|ð |ð|ð³|ð²|ð|ð©|ð|ðŽ|ð³|ð»|ðŒ|ðœ|ðŸ|ð¿|âº|â¹|â |â£|â€|â|â|â|â|â|â·|â¹|â|â|â°|âª|â©|â²|âº|âš|âœ|â|âµ|âŽ|â|â|â³|â|â°|â±|â²|â|â|â|â
|â|â|â|â±|â¡|â|â|â|â|âš|âœ|âŸ|â³|âž|â |â¥|âŠ|â£|â|â|â|âš|â|â|â|â|â|â|â|â|â|â|â|â°|â±|â¿|â |â|â¢|â£|â¬|â|â¡|â|â¬|â|â¬
|â|â|â|â©|âª|‎|‵|â|â¡|âž|â¯|â|âŠ|âª|â®|â|â|â|â|â|â|â|â|â|â|â|â|â|â¶|â©|â|â¯|â|âª|â®|â«|â¬|âž|â¹|âº|â|â|â|â§|â|â|â|â|âŸ|âŒ|â|â|â|â|â|ã°|â|â»|â|â|â
|â|â|â|â|â°|â¿|ãœ|â³|âŽ|â|©|®|â¢|â¹|â|ã|ã|â«|âª|â¬|â¬|âŒ|â»|âŸ|âœ|âª|â«)";
var i = 0;
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);
while(m.find( )) {
i++;
System.out.println("Found value: " + m.group(0) );
}
System.out.println("Found " + i + " emojis." );
}
}
More information:
https://github.com/sweaver2112/Regex-combined-emojis
Solution 14 - Java
You can generate your own regex whenever the spec changes.
This tool (screenshot here).
For utf-8/32 mode (stringed), expanded mode :
" # Use the 'Mega-Conversion' tool to change into other syntaxes"
" # -------------------------------------------------------------"
" "
" [#*0-9] \\x{FE0F} \\x{20E3}"
" | [\\x{A9}\\x{AE}\\x{203C}\\x{2049}\\x{2122}\\x{2139}\\x{2194}-\\x{2199}\\x{21A9}\\x{21AA}\\x{231A}\\x{231B}\\x{2328}\\x{23CF}\\x{23E9}-\\x{23F3}\\x{23F8}-\\x{23FA}\\x{24C2}\\x{25AA}\\x{25AB}\\x{25B6}\\x{25C0}\\x{25FB}-\\x{25FE}\\x{2600}-\\x{2604}\\x{260E}\\x{2611}\\x{2614}\\x{2615}\\x{2618}]"
" | \\x{261D} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{2620}\\x{2622}\\x{2623}\\x{2626}\\x{262A}\\x{262E}\\x{262F}\\x{2638}-\\x{263A}\\x{2640}\\x{2642}\\x{2648}-\\x{2653}\\x{265F}\\x{2660}\\x{2663}\\x{2665}\\x{2666}\\x{2668}\\x{267B}\\x{267E}\\x{267F}\\x{2692}-\\x{2697}\\x{2699}\\x{269B}\\x{269C}\\x{26A0}\\x{26A1}\\x{26AA}\\x{26AB}\\x{26B0}\\x{26B1}\\x{26BD}\\x{26BE}\\x{26C4}\\x{26C5}\\x{26C8}\\x{26CE}\\x{26CF}\\x{26D1}\\x{26D3}\\x{26D4}\\x{26E9}\\x{26EA}\\x{26F0}-\\x{26F5}\\x{26F7}\\x{26F8}]"
" | \\x{26F9}"
" (?:"
" \\x{FE0F} \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{26FA}\\x{26FD}\\x{2702}\\x{2705}\\x{2708}\\x{2709}]"
" | [\\x{270A}-\\x{270D}] [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{270F}\\x{2712}\\x{2714}\\x{2716}\\x{271D}\\x{2721}\\x{2728}\\x{2733}\\x{2734}\\x{2744}\\x{2747}\\x{274C}\\x{274E}\\x{2753}-\\x{2755}\\x{2757}\\x{2763}\\x{2764}\\x{2795}-\\x{2797}\\x{27A1}\\x{27B0}\\x{27BF}\\x{2934}\\x{2935}\\x{2B05}-\\x{2B07}\\x{2B1B}\\x{2B1C}\\x{2B50}\\x{2B55}\\x{3030}\\x{303D}\\x{3297}\\x{3299}\\x{1F004}\\x{1F0CF}\\x{1F170}\\x{1F171}\\x{1F17E}\\x{1F17F}\\x{1F18E}\\x{1F191}-\\x{1F19A}]"
" | \\x{1F1E6} [\\x{1F1E8}-\\x{1F1EC}\\x{1F1EE}\\x{1F1F1}\\x{1F1F2}\\x{1F1F4}\\x{1F1F6}-\\x{1F1FA}\\x{1F1FC}\\x{1F1FD}\\x{1F1FF}]"
" | \\x{1F1E7} [\\x{1F1E6}\\x{1F1E7}\\x{1F1E9}-\\x{1F1EF}\\x{1F1F1}-\\x{1F1F4}\\x{1F1F6}-\\x{1F1F9}\\x{1F1FB}\\x{1F1FC}\\x{1F1FE}\\x{1F1FF}]"
" | \\x{1F1E8} [\\x{1F1E6}\\x{1F1E8}\\x{1F1E9}\\x{1F1EB}-\\x{1F1EE}\\x{1F1F0}-\\x{1F1F5}\\x{1F1F7}\\x{1F1FA}-\\x{1F1FF}]"
" | \\x{1F1E9} [\\x{1F1EA}\\x{1F1EC}\\x{1F1EF}\\x{1F1F0}\\x{1F1F2}\\x{1F1F4}\\x{1F1FF}]"
" | \\x{1F1EA} [\\x{1F1E6}\\x{1F1E8}\\x{1F1EA}\\x{1F1EC}\\x{1F1ED}\\x{1F1F7}-\\x{1F1FA}]"
" | \\x{1F1EB} [\\x{1F1EE}-\\x{1F1F0}\\x{1F1F2}\\x{1F1F4}\\x{1F1F7}]"
" | \\x{1F1EC} [\\x{1F1E6}\\x{1F1E7}\\x{1F1E9}-\\x{1F1EE}\\x{1F1F1}-\\x{1F1F3}\\x{1F1F5}-\\x{1F1FA}\\x{1F1FC}\\x{1F1FE}]"
" | \\x{1F1ED} [\\x{1F1F0}\\x{1F1F2}\\x{1F1F3}\\x{1F1F7}\\x{1F1F9}\\x{1F1FA}]"
" | \\x{1F1EE} [\\x{1F1E8}-\\x{1F1EA}\\x{1F1F1}-\\x{1F1F4}\\x{1F1F6}-\\x{1F1F9}]"
" | \\x{1F1EF} [\\x{1F1EA}\\x{1F1F2}\\x{1F1F4}\\x{1F1F5}]"
" | \\x{1F1F0} [\\x{1F1EA}\\x{1F1EC}-\\x{1F1EE}\\x{1F1F2}\\x{1F1F3}\\x{1F1F5}\\x{1F1F7}\\x{1F1FC}\\x{1F1FE}\\x{1F1FF}]"
" | \\x{1F1F1} [\\x{1F1E6}-\\x{1F1E8}\\x{1F1EE}\\x{1F1F0}\\x{1F1F7}-\\x{1F1FB}\\x{1F1FE}]"
" | \\x{1F1F2} [\\x{1F1E6}\\x{1F1E8}-\\x{1F1ED}\\x{1F1F0}-\\x{1F1FF}]"
" | \\x{1F1F3} [\\x{1F1E6}\\x{1F1E8}\\x{1F1EA}-\\x{1F1EC}\\x{1F1EE}\\x{1F1F1}\\x{1F1F4}\\x{1F1F5}\\x{1F1F7}\\x{1F1FA}\\x{1F1FF}]"
" | \\x{1F1F4} \\x{1F1F2}"
" | \\x{1F1F5} [\\x{1F1E6}\\x{1F1EA}-\\x{1F1ED}\\x{1F1F0}-\\x{1F1F3}\\x{1F1F7}-\\x{1F1F9}\\x{1F1FC}\\x{1F1FE}]"
" | \\x{1F1F6} \\x{1F1E6}"
" | \\x{1F1F7} [\\x{1F1EA}\\x{1F1F4}\\x{1F1F8}\\x{1F1FA}\\x{1F1FC}]"
" | \\x{1F1F8} [\\x{1F1E6}-\\x{1F1EA}\\x{1F1EC}-\\x{1F1F4}\\x{1F1F7}-\\x{1F1F9}\\x{1F1FB}\\x{1F1FD}-\\x{1F1FF}]"
" | \\x{1F1F9} [\\x{1F1E6}\\x{1F1E8}\\x{1F1E9}\\x{1F1EB}-\\x{1F1ED}\\x{1F1EF}-\\x{1F1F4}\\x{1F1F7}\\x{1F1F9}\\x{1F1FB}\\x{1F1FC}\\x{1F1FF}]"
" | \\x{1F1FA} [\\x{1F1E6}\\x{1F1EC}\\x{1F1F2}\\x{1F1F3}\\x{1F1F8}\\x{1F1FE}\\x{1F1FF}]"
" | \\x{1F1FB} [\\x{1F1E6}\\x{1F1E8}\\x{1F1EA}\\x{1F1EC}\\x{1F1EE}\\x{1F1F3}\\x{1F1FA}]"
" | \\x{1F1FC} [\\x{1F1EB}\\x{1F1F8}]"
" | \\x{1F1FD} \\x{1F1F0}"
" | \\x{1F1FE} [\\x{1F1EA}\\x{1F1F9}]"
" | \\x{1F1FF} [\\x{1F1E6}\\x{1F1F2}\\x{1F1FC}]"
" | [\\x{1F201}\\x{1F202}\\x{1F21A}\\x{1F22F}\\x{1F232}-\\x{1F23A}\\x{1F250}\\x{1F251}\\x{1F300}-\\x{1F321}\\x{1F324}-\\x{1F384}]"
" | \\x{1F385} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F386}-\\x{1F393}\\x{1F396}\\x{1F397}\\x{1F399}-\\x{1F39B}\\x{1F39E}-\\x{1F3C1}]"
" | \\x{1F3C2} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F3C3}\\x{1F3C4}]"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F3C5}\\x{1F3C6}]"
" | \\x{1F3C7} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F3C8}\\x{1F3C9}]"
" | \\x{1F3CA}"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F3CB}\\x{1F3CC}]"
" (?:"
" \\x{FE0F} \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F3CD}-\\x{1F3F0}]"
" | \\x{1F3F3}"
" (?: \\x{FE0F} \\x{200D} \\x{1F308} )?"
" | \\x{1F3F4}"
" (?:"
" \\x{200D} \\x{2620} \\x{FE0F}"
" | \\x{E0067} \\x{E0062}"
" (?:"
" \\x{E0065} \\x{E006E} \\x{E0067}"
" | \\x{E0073} \\x{E0063} \\x{E0074}"
" | \\x{E0077} \\x{E006C} \\x{E0073}"
" )"
" \\x{E007F}"
" )?"
" | [\\x{1F3F5}\\x{1F3F7}-\\x{1F440}]"
" | \\x{1F441}"
" (?: \\x{FE0F} \\x{200D} \\x{1F5E8} \\x{FE0F} )?"
" | [\\x{1F442}\\x{1F443}] [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F444}\\x{1F445}]"
" | [\\x{1F446}-\\x{1F450}] [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F451}-\\x{1F465}]"
" | [\\x{1F466}\\x{1F467}] [\\x{1F3FB}-\\x{1F3FF}]?"
" | \\x{1F468}"
" (?:"
" \\x{200D}"
" (?:"
" [\\x{2695}\\x{2696}\\x{2708}] \\x{FE0F}"
" | \\x{2764} \\x{FE0F} \\x{200D}"
" (?: \\x{1F48B} \\x{200D} )?"
" \\x{1F468}"
" | [\\x{1F33E}\\x{1F373}\\x{1F393}\\x{1F3A4}\\x{1F3A8}\\x{1F3EB}\\x{1F3ED}]"
" | \\x{1F466}"
" (?: \\x{200D} \\x{1F466} )?"
" | \\x{1F467}"
" (?: \\x{200D} [\\x{1F466}\\x{1F467}] )?"
" | [\\x{1F468}\\x{1F469}] \\x{200D}"
" (?:"
" \\x{1F466}"
" (?: \\x{200D} \\x{1F466} )?"
" | \\x{1F467}"
" (?: \\x{200D} [\\x{1F466}\\x{1F467}] )?"
" )"
" | [\\x{1F4BB}\\x{1F4BC}\\x{1F527}\\x{1F52C}\\x{1F680}\\x{1F692}\\x{1F9B0}-\\x{1F9B3}]"
" )"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?:"
" \\x{200D}"
" (?:"
" [\\x{2695}\\x{2696}\\x{2708}] \\x{FE0F}"
" | [\\x{1F33E}\\x{1F373}\\x{1F393}\\x{1F3A4}\\x{1F3A8}\\x{1F3EB}\\x{1F3ED}\\x{1F4BB}\\x{1F4BC}\\x{1F527}\\x{1F52C}\\x{1F680}\\x{1F692}\\x{1F9B0}-\\x{1F9B3}]"
" )"
" )?"
" )?"
" | \\x{1F469}"
" (?:"
" \\x{200D}"
" (?:"
" [\\x{2695}\\x{2696}\\x{2708}] \\x{FE0F}"
" | \\x{2764} \\x{FE0F} \\x{200D}"
" (?: \\x{1F48B} \\x{200D} )?"
" [\\x{1F468}\\x{1F469}]"
" | [\\x{1F33E}\\x{1F373}\\x{1F393}\\x{1F3A4}\\x{1F3A8}\\x{1F3EB}\\x{1F3ED}]"
" | \\x{1F466}"
" (?: \\x{200D} \\x{1F466} )?"
" | \\x{1F467}"
" (?: \\x{200D} [\\x{1F466}\\x{1F467}] )?"
" | \\x{1F469} \\x{200D}"
" (?:"
" \\x{1F466}"
" (?: \\x{200D} \\x{1F466} )?"
" | \\x{1F467}"
" (?: \\x{200D} [\\x{1F466}\\x{1F467}] )?"
" )"
" | [\\x{1F4BB}\\x{1F4BC}\\x{1F527}\\x{1F52C}\\x{1F680}\\x{1F692}\\x{1F9B0}-\\x{1F9B3}]"
" )"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?:"
" \\x{200D}"
" (?:"
" [\\x{2695}\\x{2696}\\x{2708}] \\x{FE0F}"
" | [\\x{1F33E}\\x{1F373}\\x{1F393}\\x{1F3A4}\\x{1F3A8}\\x{1F3EB}\\x{1F3ED}\\x{1F4BB}\\x{1F4BC}\\x{1F527}\\x{1F52C}\\x{1F680}\\x{1F692}\\x{1F9B0}-\\x{1F9B3}]"
" )"
" )?"
" )?"
" | [\\x{1F46A}-\\x{1F46D}]"
" | \\x{1F46E}"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | \\x{1F46F}"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" | \\x{1F470} [\\x{1F3FB}-\\x{1F3FF}]?"
" | \\x{1F471}"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | \\x{1F472} [\\x{1F3FB}-\\x{1F3FF}]?"
" | \\x{1F473}"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F474}-\\x{1F476}] [\\x{1F3FB}-\\x{1F3FF}]?"
" | \\x{1F477}"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | \\x{1F478} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F479}-\\x{1F47B}]"
" | \\x{1F47C} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F47D}-\\x{1F480}]"
" | [\\x{1F481}\\x{1F482}]"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | \\x{1F483} [\\x{1F3FB}-\\x{1F3FF}]?"
" | \\x{1F484}"
" | \\x{1F485} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F486}\\x{1F487}]"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F488}-\\x{1F4A9}]"
" | \\x{1F4AA} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F4AB}-\\x{1F4FD}\\x{1F4FF}-\\x{1F53D}\\x{1F549}-\\x{1F54E}\\x{1F550}-\\x{1F567}\\x{1F56F}\\x{1F570}\\x{1F573}]"
" | \\x{1F574} [\\x{1F3FB}-\\x{1F3FF}]?"
" | \\x{1F575}"
" (?:"
" \\x{FE0F} \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F576}-\\x{1F579}]"
" | \\x{1F57A} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F587}\\x{1F58A}-\\x{1F58D}]"
" | [\\x{1F590}\\x{1F595}\\x{1F596}] [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F5A4}\\x{1F5A5}\\x{1F5A8}\\x{1F5B1}\\x{1F5B2}\\x{1F5BC}\\x{1F5C2}-\\x{1F5C4}\\x{1F5D1}-\\x{1F5D3}\\x{1F5DC}-\\x{1F5DE}\\x{1F5E1}\\x{1F5E3}\\x{1F5E8}\\x{1F5EF}\\x{1F5F3}\\x{1F5FA}-\\x{1F644}]"
" | [\\x{1F645}-\\x{1F647}]"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F648}-\\x{1F64A}]"
" | \\x{1F64B}"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | \\x{1F64C} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F64D}\\x{1F64E}]"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | \\x{1F64F} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F680}-\\x{1F6A2}]"
" | \\x{1F6A3}"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F6A4}-\\x{1F6B3}]"
" | [\\x{1F6B4}-\\x{1F6B6}]"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F6B7}-\\x{1F6BF}]"
" | \\x{1F6C0} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F6C1}-\\x{1F6C5}\\x{1F6CB}]"
" | \\x{1F6CC} [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F6CD}-\\x{1F6D2}\\x{1F6E0}-\\x{1F6E5}\\x{1F6E9}\\x{1F6EB}\\x{1F6EC}\\x{1F6F0}\\x{1F6F3}-\\x{1F6F9}\\x{1F910}-\\x{1F917}]"
" | [\\x{1F918}-\\x{1F91C}] [\\x{1F3FB}-\\x{1F3FF}]?"
" | \\x{1F91D}"
" | [\\x{1F91E}\\x{1F91F}] [\\x{1F3FB}-\\x{1F3FF}]?"
" | [\\x{1F920}-\\x{1F925}]"
" | \\x{1F926}"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F927}-\\x{1F92F}]"
" | [\\x{1F930}-\\x{1F936}] [\\x{1F3FB}-\\x{1F3FF}]?"
" | \\x{1F937}"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F938}\\x{1F939}]"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | \\x{1F93A}"
" | \\x{1F93C}"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" | [\\x{1F93D}\\x{1F93E}]"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F940}-\\x{1F945}\\x{1F947}-\\x{1F970}\\x{1F973}-\\x{1F976}\\x{1F97A}\\x{1F97C}-\\x{1F9A2}\\x{1F9B0}-\\x{1F9B4}]"
" | [\\x{1F9B5}\\x{1F9B6}] [\\x{1F3FB}-\\x{1F3FF}]?"
" | \\x{1F9B7}"
" | [\\x{1F9B8}\\x{1F9B9}]"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F9C0}-\\x{1F9C2}\\x{1F9D0}]"
" | [\\x{1F9D1}-\\x{1F9D5}] [\\x{1F3FB}-\\x{1F3FF}]?"
" | \\x{1F9D6}"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F9D7}-\\x{1F9DD}]"
" (?:"
" \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F}"
" | [\\x{1F3FB}-\\x{1F3FF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" )?"
" | [\\x{1F9DE}\\x{1F9DF}]"
" (?: \\x{200D} [\\x{2640}\\x{2642}] \\x{FE0F} )?"
" | [\\x{1F9E0}-\\x{1F9FF}]"
For utf-16 mode (stringed), compressed mode :
"[#*0-9]\\uFE0F\\u20E3|[\\u00A9\\u00AE\\u203C\\u2049\\u2122\\u2139\\u2"
"194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\"
"u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u260"
"0-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618]|\\u261D(?:\\uD83C[\\uDF"
"FB-\\uDFFF])?|[\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u26"
"38-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u"
"2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\"
"u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\"
"u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5"
"\\u26F7\\u26F8]|\\u26F9(?:\\uD83C[\\uDFFB-\\uDFFF](?:\\u200D[\\u2640"
"\\u2642]\\uFE0F)?|\\uFE0F\\u200D[\\u2640\\u2642]\\uFE0F)?|[\\u26FA\\u"
"26FD\\u2702\\u2705\\u2708\\u2709]|[\\u270A-\\u270D](?:\\uD83C[\\uDFF"
"B-\\uDFFF])?|[\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u273"
"3\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u27"
"64\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u"
"2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C(?:[\\u"
"DC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A]|\\uDDE"
"6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\u"
"DDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDD"
"F1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C"
"[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\u"
"DDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDF"
"F]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]"
"|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C["
"\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uD"
"DFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDD"
"EE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD8"
"3C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDE"
"E\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\u"
"DDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uD"
"DE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDD"
"EA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\"
"uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uD"
"DF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDD"
"EA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC"
"-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6"
"\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDD"
"FC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\"
"uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDD"
"FA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD8"
"3C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|[\\uDE01\\uD"
"E02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-"
"\\uDF84]|\\uDF85(?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDF86-\\uDF93\\uDF9"
"6\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFC1]|\\uDFC2(?:\\uD83C[\\uDFFB-\\u"
"DFFF])?|[\\uDFC3\\uDFC4](?:\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C[\\"
"uDFFB-\\uDFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|[\\uDFC5\\uDFC6"
"]|\\uDFC7(?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC8\\uDFC9]|\\uDFCA(?:\\"
"u200D[\\u2640\\u2642]\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF](?:\\u200D[\\u2"
"640\\u2642]\\uFE0F)?)?|[\\uDFCB\\uDFCC](?:\\uD83C[\\uDFFB-\\uDFFF]("
"?:\\u200D[\\u2640\\u2642]\\uFE0F)?|\\uFE0F\\u200D[\\u2640\\u2642]\\uF"
"E0F)?|[\\uDFCD-\\uDFF0]|\\uDFF3(?:\\uFE0F\\u200D\\uD83C\\uDF08)?|\\u"
"DFF4(?:\\u200D\\u2620\\uFE0F|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\"
"uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74"
"|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?|[\\uDFF5\\uDFF7"
"-\\uDFFF])|\\uD83D(?:[\\uDC00-\\uDC40]|\\uDC41(?:\\uFE0F\\u200D\\uD8"
"3D\\uDDE8\\uFE0F)?|[\\uDC42\\uDC43](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\"
"uDC44\\uDC45]|[\\uDC46-\\uDC50](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC"
"51-\\uDC65]|[\\uDC66\\uDC67](?:\\uD83C[\\uDFFB-\\uDFFF])?|\\uDC68(?"
":\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F|\\u2764\\uFE0F\\u200D\\uD83"
"D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDF"
"A4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?"
"|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|[\\uDC68\\uDC69]\\u200D\\"
"uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D["
"\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92])|\\uD"
"83E[\\uDDB0-\\uDDB3])|\\uD83C[\\uDFFB-\\uDFFF](?:\\u200D(?:[\\u2695"
"\\u2696\\u2708]\\uFE0F|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uD"
"FEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD8"
"3E[\\uDDB0-\\uDDB3]))?)?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708"
"]\\uFE0F|\\u2764\\uFE0F\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC"
"68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]"
"|\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83"
"D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D"
"\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCB"
"C\\uDD27\\uDD2C\\uDE80\\uDE92])|\\uD83E[\\uDDB0-\\uDDB3])|\\uD83C[\\u"
"DFFB-\\uDFFF](?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83C[\\u"
"DF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCB"
"C\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDB0-\\uDDB3]))?)?|[\\uDC6"
"A-\\uDC6D]|\\uDC6E(?:\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C[\\uDFFB-"
"\\uDFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|\\uDC6F(?:\\u200D[\\u2"
"640\\u2642]\\uFE0F)?|\\uDC70(?:\\uD83C[\\uDFFB-\\uDFFF])?|\\uDC71(?"
":\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF](?:\\u200D[\\"
"u2640\\u2642]\\uFE0F)?)?|\\uDC72(?:\\uD83C[\\uDFFB-\\uDFFF])?|\\uDC"
"73(?:\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF](?:\\u20"
"0D[\\u2640\\u2642]\\uFE0F)?)?|[\\uDC74-\\uDC76](?:\\uD83C[\\uDFFB-\\"
"uDFFF])?|\\uDC77(?:\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C[\\uDFFB-\\"
"uDFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|\\uDC78(?:\\uD83C[\\uDF"
"FB-\\uDFFF])?|[\\uDC79-\\uDC7B]|\\uDC7C(?:\\uD83C[\\uDFFB-\\uDFFF])"
"?|[\\uDC7D-\\uDC80]|[\\uDC81\\uDC82](?:\\u200D[\\u2640\\u2642]\\uFE0"
"F|\\uD83C[\\uDFFB-\\uDFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|\\uD"
"C83(?:\\uD83C[\\uDFFB-\\uDFFF])?|\\uDC84|\\uDC85(?:\\uD83C[\\uDFFB-"
"\\uDFFF])?|[\\uDC86\\uDC87](?:\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C"
"[\\uDFFB-\\uDFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|[\\uDC88-\\uD"
"CA9]|\\uDCAA(?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDCAB-\\uDCFD\\uDCFF-\\"
"uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73]|\\uDD74(?:"
"\\uD83C[\\uDFFB-\\uDFFF])?|\\uDD75(?:\\uD83C[\\uDFFB-\\uDFFF](?:\\u2"
"00D[\\u2640\\u2642]\\uFE0F)?|\\uFE0F\\u200D[\\u2640\\u2642]\\uFE0F)?"
"|[\\uDD76-\\uDD79]|\\uDD7A(?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD87\\uD"
"D8A-\\uDD8D]|[\\uDD90\\uDD95\\uDD96](?:\\uD83C[\\uDFFB-\\uDFFF])?|["
"\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDD"
"D3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE44]|"
"[\\uDE45-\\uDE47](?:\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C[\\uDFFB-\\"
"uDFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|[\\uDE48-\\uDE4A]|\\uDE"
"4B(?:\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF](?:\\u20"
"0D[\\u2640\\u2642]\\uFE0F)?)?|\\uDE4C(?:\\uD83C[\\uDFFB-\\uDFFF])?|"
"[\\uDE4D\\uDE4E](?:\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C[\\uDFFB-\\u"
"DFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|\\uDE4F(?:\\uD83C[\\uDFF"
"B-\\uDFFF])?|[\\uDE80-\\uDEA2]|\\uDEA3(?:\\u200D[\\u2640\\u2642]\\uF"
"E0F|\\uD83C[\\uDFFB-\\uDFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|["
"\\uDEA4-\\uDEB3]|[\\uDEB4-\\uDEB6](?:\\u200D[\\u2640\\u2642]\\uFE0F|"
"\\uD83C[\\uDFFB-\\uDFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|[\\uDE"
"B7-\\uDEBF]|\\uDEC0(?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDEC1-\\uDEC5\\u"
"DECB]|\\uDECC(?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDECD-\\uDED2\\uDEE0-"
"\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEF9])|\\uD83E(?:[\\uDD"
"10-\\uDD17]|[\\uDD18-\\uDD1C](?:\\uD83C[\\uDFFB-\\uDFFF])?|\\uDD1D|"
"[\\uDD1E\\uDD1F](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD20-\\uDD25]|\\uD"
"D26(?:\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF](?:\\u2"
"00D[\\u2640\\u2642]\\uFE0F)?)?|[\\uDD27-\\uDD2F]|[\\uDD30-\\uDD36]("
"?:\\uD83C[\\uDFFB-\\uDFFF])?|\\uDD37(?:\\u200D[\\u2640\\u2642]\\uFE0"
"F|\\uD83C[\\uDFFB-\\uDFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|[\\u"
"DD38\\uDD39](?:\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C[\\uDFFB-\\uDFF"
"F](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|\\uDD3A|\\uDD3C(?:\\u200D[\\"
"u2640\\u2642]\\uFE0F)?|[\\uDD3D\\uDD3E](?:\\u200D[\\u2640\\u2642]\\u"
"FE0F|\\uD83C[\\uDFFB-\\uDFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|"
"[\\uDD40-\\uDD45\\uDD47-\\uDD70\\uDD73-\\uDD76\\uDD7A\\uDD7C-\\uDDA2\\"
"uDDB0-\\uDDB4]|[\\uDDB5\\uDDB6](?:\\uD83C[\\uDFFB-\\uDFFF])?|\\uDDB"
"7|[\\uDDB8\\uDDB9](?:\\u200D[\\u2640\\u2642]\\uFE0F|\\uD83C[\\uDFFB-"
"\\uDFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|[\\uDDC0-\\uDDC2\\uDDD"
"0]|[\\uDDD1-\\uDDD5](?:\\uD83C[\\uDFFB-\\uDFFF])?|\\uDDD6(?:\\u200D"
"[\\u2640\\u2642]\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF](?:\\u200D[\\u2640\\u"
"2642]\\uFE0F)?)?|[\\uDDD7-\\uDDDD](?:\\u200D[\\u2640\\u2642]\\uFE0F"
"|\\uD83C[\\uDFFB-\\uDFFF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?)?|[\\uD"
"DDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F)?|[\\uDDE0-\\uDDFF])"
Solution 15 - Java
Regex is too slow, and Emoji is updated very fast.
Try this project simple-emoji-4j
Compatible with Emoji 12.0 (2018.10.15)
Simple with:
EmojiUtils.containsEmoji(str)
Solution 16 - Java
\p{Cs}
works well for matching emoji with PCRE regex flavours. Test it at https://regex101.com/r/o69vJJ/1.
Solution 17 - Java
Some PRCE do not acknowlege \p
. Many do not permit ranges on characters exceeding 2 bytes \udde6-\ud83c
.
One effective trick I have come up with is to encode them so the characters are forced to be escaped, such as json.
After encoding to json, the characters are now a literal \ud000
which one can find with a standard regular express: \\\\ud[0-9a-f]{3}
, \\\\u[0-9a-f]{4,6}
After filtering the escaped strings, the data can be decoded again without the emoticons present.