How to find the "paired characters" in perl? [duplicate] - perl
What is a list of every unicode bracket-like characters (including, for example: {}[]()<>)? What is a good way to search for unicode characters?
There is a plain-text database of information about every Unicode character available from the Unicode Consortium; the format is described in Unicode Annex #44. The primary information is contained in UnicodeData.txt. Open and close punctuation characters are denoted with Ps (punctuation start) and Pe (punctuation end) in the General_Category field (the third field, delimited by ;). Look for those character, and you'll find what you're looking for.
Note that not all characters that you consider brackets may be listed; for instance, quotation marks (including "«»"). are indicated with Pi and Pf (initial and final punctuation), so you might want to include those as well. And some character, like < and >, are used as brackets in some contexts (such as HTML/XML), while they are considered math symbols (Sm) in UnicodeData.txt. Those you are going to have to find by hand; there is no pre-determined listing of those.
Here's a quick Bash script to get this information, and its output. I've included both brackets and quotes. (note: on some Bash implementations UTF-8 printing has a bug that causes it to print U+00AB "«" and U+00BB "»" as "?", and some terminals don't have the ability to render all characters correctly.)
while IFS=';' read number name category rest
do
if [[ "$category" =~ Ps|Pe|Pi|Pf ]]
then
printf "%s (U+%s, %s): \u"$number"\n" "$name" "$number" "$category"
fi
done <UnicodeData.txt
LEFT PARENTHESIS (U+0028, Ps): (
RIGHT PARENTHESIS (U+0029, Pe): )
LEFT SQUARE BRACKET (U+005B, Ps): [
RIGHT SQUARE BRACKET (U+005D, Pe): ]
LEFT CURLY BRACKET (U+007B, Ps): {
RIGHT CURLY BRACKET (U+007D, Pe): }
LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (U+00AB, Pi): «
RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (U+00BB, Pf): »
TIBETAN MARK GUG RTAGS GYON (U+0F3A, Ps): ༺
TIBETAN MARK GUG RTAGS GYAS (U+0F3B, Pe): ༻
TIBETAN MARK ANG KHANG GYON (U+0F3C, Ps): ༼
TIBETAN MARK ANG KHANG GYAS (U+0F3D, Pe): ༽
OGHAM FEATHER MARK (U+169B, Ps): ᚛
OGHAM REVERSED FEATHER MARK (U+169C, Pe): ᚜
LEFT SINGLE QUOTATION MARK (U+2018, Pi): ‘
RIGHT SINGLE QUOTATION MARK (U+2019, Pf): ’
SINGLE LOW-9 QUOTATION MARK (U+201A, Ps): ‚
SINGLE HIGH-REVERSED-9 QUOTATION MARK (U+201B, Pi): ‛
LEFT DOUBLE QUOTATION MARK (U+201C, Pi): “
RIGHT DOUBLE QUOTATION MARK (U+201D, Pf): ”
DOUBLE LOW-9 QUOTATION MARK (U+201E, Ps): „
DOUBLE HIGH-REVERSED-9 QUOTATION MARK (U+201F, Pi): ‟
SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039, Pi): ‹
SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A, Pf): ›
LEFT SQUARE BRACKET WITH QUILL (U+2045, Ps): ⁅
RIGHT SQUARE BRACKET WITH QUILL (U+2046, Pe): ⁆
SUPERSCRIPT LEFT PARENTHESIS (U+207D, Ps): ⁽
SUPERSCRIPT RIGHT PARENTHESIS (U+207E, Pe): ⁾
SUBSCRIPT LEFT PARENTHESIS (U+208D, Ps): ₍
SUBSCRIPT RIGHT PARENTHESIS (U+208E, Pe): ₎
LEFT-POINTING ANGLE BRACKET (U+2329, Ps): 〈
RIGHT-POINTING ANGLE BRACKET (U+232A, Pe): 〉
MEDIUM LEFT PARENTHESIS ORNAMENT (U+2768, Ps): ❨
MEDIUM RIGHT PARENTHESIS ORNAMENT (U+2769, Pe): ❩
MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT (U+276A, Ps): ❪
MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT (U+276B, Pe): ❫
MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT (U+276C, Ps): ❬
MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT (U+276D, Pe): ❭
HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT (U+276E, Ps): ❮
HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT (U+276F, Pe): ❯
HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT (U+2770, Ps): ❰
HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT (U+2771, Pe): ❱
LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT (U+2772, Ps): ❲
LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT (U+2773, Pe): ❳
MEDIUM LEFT CURLY BRACKET ORNAMENT (U+2774, Ps): ❴
MEDIUM RIGHT CURLY BRACKET ORNAMENT (U+2775, Pe): ❵
LEFT S-SHAPED BAG DELIMITER (U+27C5, Ps): ⟅
RIGHT S-SHAPED BAG DELIMITER (U+27C6, Pe): ⟆
MATHEMATICAL LEFT WHITE SQUARE BRACKET (U+27E6, Ps): ⟦
MATHEMATICAL RIGHT WHITE SQUARE BRACKET (U+27E7, Pe): ⟧
MATHEMATICAL LEFT ANGLE BRACKET (U+27E8, Ps): ⟨
MATHEMATICAL RIGHT ANGLE BRACKET (U+27E9, Pe): ⟩
MATHEMATICAL LEFT DOUBLE ANGLE BRACKET (U+27EA, Ps): ⟪
MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET (U+27EB, Pe): ⟫
MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET (U+27EC, Ps): ⟬
MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET (U+27ED, Pe): ⟭
MATHEMATICAL LEFT FLATTENED PARENTHESIS (U+27EE, Ps): ⟮
MATHEMATICAL RIGHT FLATTENED PARENTHESIS (U+27EF, Pe): ⟯
LEFT WHITE CURLY BRACKET (U+2983, Ps): ⦃
RIGHT WHITE CURLY BRACKET (U+2984, Pe): ⦄
LEFT WHITE PARENTHESIS (U+2985, Ps): ⦅
RIGHT WHITE PARENTHESIS (U+2986, Pe): ⦆
Z NOTATION LEFT IMAGE BRACKET (U+2987, Ps): ⦇
Z NOTATION RIGHT IMAGE BRACKET (U+2988, Pe): ⦈
Z NOTATION LEFT BINDING BRACKET (U+2989, Ps): ⦉
Z NOTATION RIGHT BINDING BRACKET (U+298A, Pe): ⦊
LEFT SQUARE BRACKET WITH UNDERBAR (U+298B, Ps): ⦋
RIGHT SQUARE BRACKET WITH UNDERBAR (U+298C, Pe): ⦌
LEFT SQUARE BRACKET WITH TICK IN TOP CORNER (U+298D, Ps): ⦍
RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER (U+298E, Pe): ⦎
LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER (U+298F, Ps): ⦏
RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER (U+2990, Pe): ⦐
LEFT ANGLE BRACKET WITH DOT (U+2991, Ps): ⦑
RIGHT ANGLE BRACKET WITH DOT (U+2992, Pe): ⦒
LEFT ARC LESS-THAN BRACKET (U+2993, Ps): ⦓
RIGHT ARC GREATER-THAN BRACKET (U+2994, Pe): ⦔
DOUBLE LEFT ARC GREATER-THAN BRACKET (U+2995, Ps): ⦕
DOUBLE RIGHT ARC LESS-THAN BRACKET (U+2996, Pe): ⦖
LEFT BLACK TORTOISE SHELL BRACKET (U+2997, Ps): ⦗
RIGHT BLACK TORTOISE SHELL BRACKET (U+2998, Pe): ⦘
LEFT WIGGLY FENCE (U+29D8, Ps): ⧘
RIGHT WIGGLY FENCE (U+29D9, Pe): ⧙
LEFT DOUBLE WIGGLY FENCE (U+29DA, Ps): ⧚
RIGHT DOUBLE WIGGLY FENCE (U+29DB, Pe): ⧛
LEFT-POINTING CURVED ANGLE BRACKET (U+29FC, Ps): ⧼
RIGHT-POINTING CURVED ANGLE BRACKET (U+29FD, Pe): ⧽
LEFT SUBSTITUTION BRACKET (U+2E02, Pi): ⸂
RIGHT SUBSTITUTION BRACKET (U+2E03, Pf): ⸃
LEFT DOTTED SUBSTITUTION BRACKET (U+2E04, Pi): ⸄
RIGHT DOTTED SUBSTITUTION BRACKET (U+2E05, Pf): ⸅
LEFT TRANSPOSITION BRACKET (U+2E09, Pi): ⸉
RIGHT TRANSPOSITION BRACKET (U+2E0A, Pf): ⸊
LEFT RAISED OMISSION BRACKET (U+2E0C, Pi): ⸌
RIGHT RAISED OMISSION BRACKET (U+2E0D, Pf): ⸍
LEFT LOW PARAPHRASE BRACKET (U+2E1C, Pi): ⸜
RIGHT LOW PARAPHRASE BRACKET (U+2E1D, Pf): ⸝
LEFT VERTICAL BAR WITH QUILL (U+2E20, Pi): ⸠
RIGHT VERTICAL BAR WITH QUILL (U+2E21, Pf): ⸡
TOP LEFT HALF BRACKET (U+2E22, Ps): ⸢
TOP RIGHT HALF BRACKET (U+2E23, Pe): ⸣
BOTTOM LEFT HALF BRACKET (U+2E24, Ps): ⸤
BOTTOM RIGHT HALF BRACKET (U+2E25, Pe): ⸥
LEFT SIDEWAYS U BRACKET (U+2E26, Ps): ⸦
RIGHT SIDEWAYS U BRACKET (U+2E27, Pe): ⸧
LEFT DOUBLE PARENTHESIS (U+2E28, Ps): ⸨
RIGHT DOUBLE PARENTHESIS (U+2E29, Pe): ⸩
LEFT ANGLE BRACKET (U+3008, Ps): 〈
RIGHT ANGLE BRACKET (U+3009, Pe): 〉
LEFT DOUBLE ANGLE BRACKET (U+300A, Ps): 《
RIGHT DOUBLE ANGLE BRACKET (U+300B, Pe): 》
LEFT CORNER BRACKET (U+300C, Ps): 「
RIGHT CORNER BRACKET (U+300D, Pe): 」
LEFT WHITE CORNER BRACKET (U+300E, Ps): 『
RIGHT WHITE CORNER BRACKET (U+300F, Pe): 』
LEFT BLACK LENTICULAR BRACKET (U+3010, Ps): 【
RIGHT BLACK LENTICULAR BRACKET (U+3011, Pe): 】
LEFT TORTOISE SHELL BRACKET (U+3014, Ps): 〔
RIGHT TORTOISE SHELL BRACKET (U+3015, Pe): 〕
LEFT WHITE LENTICULAR BRACKET (U+3016, Ps): 〖
RIGHT WHITE LENTICULAR BRACKET (U+3017, Pe): 〗
LEFT WHITE TORTOISE SHELL BRACKET (U+3018, Ps): 〘
RIGHT WHITE TORTOISE SHELL BRACKET (U+3019, Pe): 〙
LEFT WHITE SQUARE BRACKET (U+301A, Ps): 〚
RIGHT WHITE SQUARE BRACKET (U+301B, Pe): 〛
REVERSED DOUBLE PRIME QUOTATION MARK (U+301D, Ps): 〝
DOUBLE PRIME QUOTATION MARK (U+301E, Pe): 〞
LOW DOUBLE PRIME QUOTATION MARK (U+301F, Pe): 〟
ORNATE LEFT PARENTHESIS (U+FD3E, Ps): ﴾
ORNATE RIGHT PARENTHESIS (U+FD3F, Pe): ﴿
PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET (U+FE17, Ps): ︗
PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET (U+FE18, Pe): ︘
PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS (U+FE35, Ps): ︵
PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS (U+FE36, Pe): ︶
PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET (U+FE37, Ps): ︷
PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET (U+FE38, Pe): ︸
PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET (U+FE39, Ps): ︹
PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET (U+FE3A, Pe): ︺
PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET (U+FE3B, Ps): ︻
PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET (U+FE3C, Pe): ︼
PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET (U+FE3D, Ps): ︽
PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET (U+FE3E, Pe): ︾
PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET (U+FE3F, Ps): ︿
PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET (U+FE40, Pe): ﹀
PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET (U+FE41, Ps): ﹁
PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET (U+FE42, Pe): ﹂
PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET (U+FE43, Ps): ﹃
PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET (U+FE44, Pe): ﹄
PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET (U+FE47, Ps): ﹇
PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET (U+FE48, Pe): ﹈
SMALL LEFT PARENTHESIS (U+FE59, Ps): ﹙
SMALL RIGHT PARENTHESIS (U+FE5A, Pe): ﹚
SMALL LEFT CURLY BRACKET (U+FE5B, Ps): ﹛
SMALL RIGHT CURLY BRACKET (U+FE5C, Pe): ﹜
SMALL LEFT TORTOISE SHELL BRACKET (U+FE5D, Ps): ﹝
SMALL RIGHT TORTOISE SHELL BRACKET (U+FE5E, Pe): ﹞
FULLWIDTH LEFT PARENTHESIS (U+FF08, Ps): (
FULLWIDTH RIGHT PARENTHESIS (U+FF09, Pe): )
FULLWIDTH LEFT SQUARE BRACKET (U+FF3B, Ps): [
FULLWIDTH RIGHT SQUARE BRACKET (U+FF3D, Pe): ]
FULLWIDTH LEFT CURLY BRACKET (U+FF5B, Ps): {
FULLWIDTH RIGHT CURLY BRACKET (U+FF5D, Pe): }
FULLWIDTH LEFT WHITE PARENTHESIS (U+FF5F, Ps): ⦅
FULLWIDTH RIGHT WHITE PARENTHESIS (U+FF60, Pe): ⦆
HALFWIDTH LEFT CORNER BRACKET (U+FF62, Ps): 「
HALFWIDTH RIGHT CORNER BRACKET (U+FF63, Pe): 」
There's no canonical list of this in Unicode—you'll have to define your own list. You could start by using Python's unicodedata module to explore the Unicode database. Note that this won't find things like <> that are used as braces even though they have other official meanings, namely as less-than and greater-than signs.
#!/usr/bin/env python2.7
import re
import unicodedata
for i in range(0x10000):
char = unichr(i)
category = unicodedata.category(char)
name = unicodedata.name(char, '')
if ('bracket' in name.lower() or 'paren' in name.lower()
or category in ['Ps', 'Pe']):
print 'U+%04x %s %s %c' % (i, category, name, char)
Output:
U+0028 Ps LEFT PARENTHESIS (
U+0029 Pe RIGHT PARENTHESIS )
U+005b Ps LEFT SQUARE BRACKET [
U+005d Pe RIGHT SQUARE BRACKET ]
U+007b Ps LEFT CURLY BRACKET {
U+007d Pe RIGHT CURLY BRACKET }
U+0f3a Ps TIBETAN MARK GUG RTAGS GYON ༺
U+0f3b Pe TIBETAN MARK GUG RTAGS GYAS ༻
U+0f3c Ps TIBETAN MARK ANG KHANG GYON ༼
U+0f3d Pe TIBETAN MARK ANG KHANG GYAS ༽
U+169b Ps OGHAM FEATHER MARK ᚛
U+169c Pe OGHAM REVERSED FEATHER MARK ᚜
U+201a Ps SINGLE LOW-9 QUOTATION MARK ‚
U+201e Ps DOUBLE LOW-9 QUOTATION MARK „
U+2045 Ps LEFT SQUARE BRACKET WITH QUILL ⁅
U+2046 Pe RIGHT SQUARE BRACKET WITH QUILL ⁆
U+207d Ps SUPERSCRIPT LEFT PARENTHESIS ⁽
U+207e Pe SUPERSCRIPT RIGHT PARENTHESIS ⁾
U+208d Ps SUBSCRIPT LEFT PARENTHESIS ₍
U+208e Pe SUBSCRIPT RIGHT PARENTHESIS ₎
U+2329 Ps LEFT-POINTING ANGLE BRACKET 〈
U+232a Pe RIGHT-POINTING ANGLE BRACKET 〉
U+239b Sm LEFT PARENTHESIS UPPER HOOK ⎛
U+239c Sm LEFT PARENTHESIS EXTENSION ⎜
U+239d Sm LEFT PARENTHESIS LOWER HOOK ⎝
U+239e Sm RIGHT PARENTHESIS UPPER HOOK ⎞
U+239f Sm RIGHT PARENTHESIS EXTENSION ⎟
U+23a0 Sm RIGHT PARENTHESIS LOWER HOOK ⎠
U+23a1 Sm LEFT SQUARE BRACKET UPPER CORNER ⎡
U+23a2 Sm LEFT SQUARE BRACKET EXTENSION ⎢
U+23a3 Sm LEFT SQUARE BRACKET LOWER CORNER ⎣
U+23a4 Sm RIGHT SQUARE BRACKET UPPER CORNER ⎤
U+23a5 Sm RIGHT SQUARE BRACKET EXTENSION ⎥
U+23a6 Sm RIGHT SQUARE BRACKET LOWER CORNER ⎦
U+23a7 Sm LEFT CURLY BRACKET UPPER HOOK ⎧
U+23a8 Sm LEFT CURLY BRACKET MIDDLE PIECE ⎨
U+23a9 Sm LEFT CURLY BRACKET LOWER HOOK ⎩
U+23aa Sm CURLY BRACKET EXTENSION ⎪
U+23ab Sm RIGHT CURLY BRACKET UPPER HOOK ⎫
U+23ac Sm RIGHT CURLY BRACKET MIDDLE PIECE ⎬
U+23ad Sm RIGHT CURLY BRACKET LOWER HOOK ⎭
U+23b0 Sm UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION ⎰
U+23b1 Sm UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION ⎱
U+23b4 So TOP SQUARE BRACKET ⎴
U+23b5 So BOTTOM SQUARE BRACKET ⎵
U+23b6 So BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET ⎶
U+23dc Sm TOP PARENTHESIS ⏜
U+23dd Sm BOTTOM PARENTHESIS ⏝
U+23de Sm TOP CURLY BRACKET ⏞
U+23df Sm BOTTOM CURLY BRACKET ⏟
U+23e0 Sm TOP TORTOISE SHELL BRACKET ⏠
U+23e1 Sm BOTTOM TORTOISE SHELL BRACKET ⏡
U+2474 No PARENTHESIZED DIGIT ONE ⑴
U+2475 No PARENTHESIZED DIGIT TWO ⑵
U+2476 No PARENTHESIZED DIGIT THREE ⑶
U+2477 No PARENTHESIZED DIGIT FOUR ⑷
U+2478 No PARENTHESIZED DIGIT FIVE ⑸
U+2479 No PARENTHESIZED DIGIT SIX ⑹
U+247a No PARENTHESIZED DIGIT SEVEN ⑺
U+247b No PARENTHESIZED DIGIT EIGHT ⑻
U+247c No PARENTHESIZED DIGIT NINE ⑼
U+247d No PARENTHESIZED NUMBER TEN ⑽
U+247e No PARENTHESIZED NUMBER ELEVEN ⑾
U+247f No PARENTHESIZED NUMBER TWELVE ⑿
U+2480 No PARENTHESIZED NUMBER THIRTEEN ⒀
U+2481 No PARENTHESIZED NUMBER FOURTEEN ⒁
U+2482 No PARENTHESIZED NUMBER FIFTEEN ⒂
U+2483 No PARENTHESIZED NUMBER SIXTEEN ⒃
U+2484 No PARENTHESIZED NUMBER SEVENTEEN ⒄
U+2485 No PARENTHESIZED NUMBER EIGHTEEN ⒅
U+2486 No PARENTHESIZED NUMBER NINETEEN ⒆
U+2487 No PARENTHESIZED NUMBER TWENTY ⒇
U+249c So PARENTHESIZED LATIN SMALL LETTER A ⒜
U+249d So PARENTHESIZED LATIN SMALL LETTER B ⒝
U+249e So PARENTHESIZED LATIN SMALL LETTER C ⒞
U+249f So PARENTHESIZED LATIN SMALL LETTER D ⒟
U+24a0 So PARENTHESIZED LATIN SMALL LETTER E ⒠
U+24a1 So PARENTHESIZED LATIN SMALL LETTER F ⒡
U+24a2 So PARENTHESIZED LATIN SMALL LETTER G ⒢
U+24a3 So PARENTHESIZED LATIN SMALL LETTER H ⒣
U+24a4 So PARENTHESIZED LATIN SMALL LETTER I ⒤
U+24a5 So PARENTHESIZED LATIN SMALL LETTER J ⒥
U+24a6 So PARENTHESIZED LATIN SMALL LETTER K ⒦
U+24a7 So PARENTHESIZED LATIN SMALL LETTER L ⒧
U+24a8 So PARENTHESIZED LATIN SMALL LETTER M ⒨
U+24a9 So PARENTHESIZED LATIN SMALL LETTER N ⒩
U+24aa So PARENTHESIZED LATIN SMALL LETTER O ⒪
U+24ab So PARENTHESIZED LATIN SMALL LETTER P ⒫
U+24ac So PARENTHESIZED LATIN SMALL LETTER Q ⒬
U+24ad So PARENTHESIZED LATIN SMALL LETTER R ⒭
U+24ae So PARENTHESIZED LATIN SMALL LETTER S ⒮
U+24af So PARENTHESIZED LATIN SMALL LETTER T ⒯
U+24b0 So PARENTHESIZED LATIN SMALL LETTER U ⒰
U+24b1 So PARENTHESIZED LATIN SMALL LETTER V ⒱
U+24b2 So PARENTHESIZED LATIN SMALL LETTER W ⒲
U+24b3 So PARENTHESIZED LATIN SMALL LETTER X ⒳
U+24b4 So PARENTHESIZED LATIN SMALL LETTER Y ⒴
U+24b5 So PARENTHESIZED LATIN SMALL LETTER Z ⒵
U+2768 Ps MEDIUM LEFT PARENTHESIS ORNAMENT ❨
U+2769 Pe MEDIUM RIGHT PARENTHESIS ORNAMENT ❩
U+276a Ps MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT ❪
U+276b Pe MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT ❫
U+276c Ps MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT ❬
U+276d Pe MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT ❭
U+276e Ps HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT ❮
U+276f Pe HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT ❯
U+2770 Ps HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT ❰
U+2771 Pe HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT ❱
U+2772 Ps LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT ❲
U+2773 Pe LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT ❳
U+2774 Ps MEDIUM LEFT CURLY BRACKET ORNAMENT ❴
U+2775 Pe MEDIUM RIGHT CURLY BRACKET ORNAMENT ❵
U+27c5 Ps LEFT S-SHAPED BAG DELIMITER ⟅
U+27c6 Pe RIGHT S-SHAPED BAG DELIMITER ⟆
U+27e6 Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET ⟦
U+27e7 Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET ⟧
U+27e8 Ps MATHEMATICAL LEFT ANGLE BRACKET ⟨
U+27e9 Pe MATHEMATICAL RIGHT ANGLE BRACKET ⟩
U+27ea Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET ⟪
U+27eb Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET ⟫
U+27ec Ps MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET ⟬
U+27ed Pe MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET ⟭
U+27ee Ps MATHEMATICAL LEFT FLATTENED PARENTHESIS ⟮
U+27ef Pe MATHEMATICAL RIGHT FLATTENED PARENTHESIS ⟯
U+2983 Ps LEFT WHITE CURLY BRACKET ⦃
U+2984 Pe RIGHT WHITE CURLY BRACKET ⦄
U+2985 Ps LEFT WHITE PARENTHESIS ⦅
U+2986 Pe RIGHT WHITE PARENTHESIS ⦆
U+2987 Ps Z NOTATION LEFT IMAGE BRACKET ⦇
U+2988 Pe Z NOTATION RIGHT IMAGE BRACKET ⦈
U+2989 Ps Z NOTATION LEFT BINDING BRACKET ⦉
U+298a Pe Z NOTATION RIGHT BINDING BRACKET ⦊
U+298b Ps LEFT SQUARE BRACKET WITH UNDERBAR ⦋
U+298c Pe RIGHT SQUARE BRACKET WITH UNDERBAR ⦌
U+298d Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER ⦍
U+298e Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER ⦎
U+298f Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER ⦏
U+2990 Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER ⦐
U+2991 Ps LEFT ANGLE BRACKET WITH DOT ⦑
U+2992 Pe RIGHT ANGLE BRACKET WITH DOT ⦒
U+2993 Ps LEFT ARC LESS-THAN BRACKET ⦓
U+2994 Pe RIGHT ARC GREATER-THAN BRACKET ⦔
U+2995 Ps DOUBLE LEFT ARC GREATER-THAN BRACKET ⦕
U+2996 Pe DOUBLE RIGHT ARC LESS-THAN BRACKET ⦖
U+2997 Ps LEFT BLACK TORTOISE SHELL BRACKET ⦗
U+2998 Pe RIGHT BLACK TORTOISE SHELL BRACKET ⦘
U+29d8 Ps LEFT WIGGLY FENCE ⧘
U+29d9 Pe RIGHT WIGGLY FENCE ⧙
U+29da Ps LEFT DOUBLE WIGGLY FENCE ⧚
U+29db Pe RIGHT DOUBLE WIGGLY FENCE ⧛
U+29fc Ps LEFT-POINTING CURVED ANGLE BRACKET ⧼
U+29fd Pe RIGHT-POINTING CURVED ANGLE BRACKET ⧽
U+2e02 Pi LEFT SUBSTITUTION BRACKET ⸂
U+2e03 Pf RIGHT SUBSTITUTION BRACKET ⸃
U+2e04 Pi LEFT DOTTED SUBSTITUTION BRACKET ⸄
U+2e05 Pf RIGHT DOTTED SUBSTITUTION BRACKET ⸅
U+2e09 Pi LEFT TRANSPOSITION BRACKET ⸉
U+2e0a Pf RIGHT TRANSPOSITION BRACKET ⸊
U+2e0c Pi LEFT RAISED OMISSION BRACKET ⸌
U+2e0d Pf RIGHT RAISED OMISSION BRACKET ⸍
U+2e1c Pi LEFT LOW PARAPHRASE BRACKET ⸜
U+2e1d Pf RIGHT LOW PARAPHRASE BRACKET ⸝
U+2e22 Ps TOP LEFT HALF BRACKET ⸢
U+2e23 Pe TOP RIGHT HALF BRACKET ⸣
U+2e24 Ps BOTTOM LEFT HALF BRACKET ⸤
U+2e25 Pe BOTTOM RIGHT HALF BRACKET ⸥
U+2e26 Ps LEFT SIDEWAYS U BRACKET ⸦
U+2e27 Pe RIGHT SIDEWAYS U BRACKET ⸧
U+2e28 Ps LEFT DOUBLE PARENTHESIS ⸨
U+2e29 Pe RIGHT DOUBLE PARENTHESIS ⸩
U+3008 Ps LEFT ANGLE BRACKET 〈
U+3009 Pe RIGHT ANGLE BRACKET 〉
U+300a Ps LEFT DOUBLE ANGLE BRACKET 《
U+300b Pe RIGHT DOUBLE ANGLE BRACKET 》
U+300c Ps LEFT CORNER BRACKET 「
U+300d Pe RIGHT CORNER BRACKET 」
U+300e Ps LEFT WHITE CORNER BRACKET 『
U+300f Pe RIGHT WHITE CORNER BRACKET 』
U+3010 Ps LEFT BLACK LENTICULAR BRACKET 【
U+3011 Pe RIGHT BLACK LENTICULAR BRACKET 】
U+3014 Ps LEFT TORTOISE SHELL BRACKET 〔
U+3015 Pe RIGHT TORTOISE SHELL BRACKET 〕
U+3016 Ps LEFT WHITE LENTICULAR BRACKET 〖
U+3017 Pe RIGHT WHITE LENTICULAR BRACKET 〗
U+3018 Ps LEFT WHITE TORTOISE SHELL BRACKET 〘
U+3019 Pe RIGHT WHITE TORTOISE SHELL BRACKET 〙
U+301a Ps LEFT WHITE SQUARE BRACKET 〚
U+301b Pe RIGHT WHITE SQUARE BRACKET 〛
U+301d Ps REVERSED DOUBLE PRIME QUOTATION MARK 〝
U+301e Pe DOUBLE PRIME QUOTATION MARK 〞
U+301f Pe LOW DOUBLE PRIME QUOTATION MARK 〟
U+3200 So PARENTHESIZED HANGUL KIYEOK ㈀
U+3201 So PARENTHESIZED HANGUL NIEUN ㈁
U+3202 So PARENTHESIZED HANGUL TIKEUT ㈂
U+3203 So PARENTHESIZED HANGUL RIEUL ㈃
U+3204 So PARENTHESIZED HANGUL MIEUM ㈄
U+3205 So PARENTHESIZED HANGUL PIEUP ㈅
U+3206 So PARENTHESIZED HANGUL SIOS ㈆
U+3207 So PARENTHESIZED HANGUL IEUNG ㈇
U+3208 So PARENTHESIZED HANGUL CIEUC ㈈
U+3209 So PARENTHESIZED HANGUL CHIEUCH ㈉
U+320a So PARENTHESIZED HANGUL KHIEUKH ㈊
U+320b So PARENTHESIZED HANGUL THIEUTH ㈋
U+320c So PARENTHESIZED HANGUL PHIEUPH ㈌
U+320d So PARENTHESIZED HANGUL HIEUH ㈍
U+320e So PARENTHESIZED HANGUL KIYEOK A ㈎
U+320f So PARENTHESIZED HANGUL NIEUN A ㈏
U+3210 So PARENTHESIZED HANGUL TIKEUT A ㈐
U+3211 So PARENTHESIZED HANGUL RIEUL A ㈑
U+3212 So PARENTHESIZED HANGUL MIEUM A ㈒
U+3213 So PARENTHESIZED HANGUL PIEUP A ㈓
U+3214 So PARENTHESIZED HANGUL SIOS A ㈔
U+3215 So PARENTHESIZED HANGUL IEUNG A ㈕
U+3216 So PARENTHESIZED HANGUL CIEUC A ㈖
U+3217 So PARENTHESIZED HANGUL CHIEUCH A ㈗
U+3218 So PARENTHESIZED HANGUL KHIEUKH A ㈘
U+3219 So PARENTHESIZED HANGUL THIEUTH A ㈙
U+321a So PARENTHESIZED HANGUL PHIEUPH A ㈚
U+321b So PARENTHESIZED HANGUL HIEUH A ㈛
U+321c So PARENTHESIZED HANGUL CIEUC U ㈜
U+321d So PARENTHESIZED KOREAN CHARACTER OJEON ㈝
U+321e So PARENTHESIZED KOREAN CHARACTER O HU ㈞
U+3220 No PARENTHESIZED IDEOGRAPH ONE ㈠
U+3221 No PARENTHESIZED IDEOGRAPH TWO ㈡
U+3222 No PARENTHESIZED IDEOGRAPH THREE ㈢
U+3223 No PARENTHESIZED IDEOGRAPH FOUR ㈣
U+3224 No PARENTHESIZED IDEOGRAPH FIVE ㈤
U+3225 No PARENTHESIZED IDEOGRAPH SIX ㈥
U+3226 No PARENTHESIZED IDEOGRAPH SEVEN ㈦
U+3227 No PARENTHESIZED IDEOGRAPH EIGHT ㈧
U+3228 No PARENTHESIZED IDEOGRAPH NINE ㈨
U+3229 No PARENTHESIZED IDEOGRAPH TEN ㈩
U+322a So PARENTHESIZED IDEOGRAPH MOON ㈪
U+322b So PARENTHESIZED IDEOGRAPH FIRE ㈫
U+322c So PARENTHESIZED IDEOGRAPH WATER ㈬
U+322d So PARENTHESIZED IDEOGRAPH WOOD ㈭
U+322e So PARENTHESIZED IDEOGRAPH METAL ㈮
U+322f So PARENTHESIZED IDEOGRAPH EARTH ㈯
U+3230 So PARENTHESIZED IDEOGRAPH SUN ㈰
U+3231 So PARENTHESIZED IDEOGRAPH STOCK ㈱
U+3232 So PARENTHESIZED IDEOGRAPH HAVE ㈲
U+3233 So PARENTHESIZED IDEOGRAPH SOCIETY ㈳
U+3234 So PARENTHESIZED IDEOGRAPH NAME ㈴
U+3235 So PARENTHESIZED IDEOGRAPH SPECIAL ㈵
U+3236 So PARENTHESIZED IDEOGRAPH FINANCIAL ㈶
U+3237 So PARENTHESIZED IDEOGRAPH CONGRATULATION ㈷
U+3238 So PARENTHESIZED IDEOGRAPH LABOR ㈸
U+3239 So PARENTHESIZED IDEOGRAPH REPRESENT ㈹
U+323a So PARENTHESIZED IDEOGRAPH CALL ㈺
U+323b So PARENTHESIZED IDEOGRAPH STUDY ㈻
U+323c So PARENTHESIZED IDEOGRAPH SUPERVISE ㈼
U+323d So PARENTHESIZED IDEOGRAPH ENTERPRISE ㈽
U+323e So PARENTHESIZED IDEOGRAPH RESOURCE ㈾
U+323f So PARENTHESIZED IDEOGRAPH ALLIANCE ㈿
U+3240 So PARENTHESIZED IDEOGRAPH FESTIVAL ㉀
U+3241 So PARENTHESIZED IDEOGRAPH REST ㉁
U+3242 So PARENTHESIZED IDEOGRAPH SELF ㉂
U+3243 So PARENTHESIZED IDEOGRAPH REACH ㉃
U+fd3e Ps ORNATE LEFT PARENTHESIS ﴾
U+fd3f Pe ORNATE RIGHT PARENTHESIS ﴿
U+fe17 Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET ︗
U+fe18 Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET ︘
U+fe35 Ps PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS ︵
U+fe36 Pe PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS ︶
U+fe37 Ps PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET ︷
U+fe38 Pe PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET ︸
U+fe39 Ps PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET ︹
U+fe3a Pe PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET ︺
U+fe3b Ps PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET ︻
U+fe3c Pe PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET ︼
U+fe3d Ps PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET ︽
U+fe3e Pe PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET ︾
U+fe3f Ps PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET ︿
U+fe40 Pe PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET ﹀
U+fe41 Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET ﹁
U+fe42 Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET ﹂
U+fe43 Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET ﹃
U+fe44 Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET ﹄
U+fe47 Ps PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET ﹇
U+fe48 Pe PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET ﹈
U+fe59 Ps SMALL LEFT PARENTHESIS ﹙
U+fe5a Pe SMALL RIGHT PARENTHESIS ﹚
U+fe5b Ps SMALL LEFT CURLY BRACKET ﹛
U+fe5c Pe SMALL RIGHT CURLY BRACKET ﹜
U+fe5d Ps SMALL LEFT TORTOISE SHELL BRACKET ﹝
U+fe5e Pe SMALL RIGHT TORTOISE SHELL BRACKET ﹞
U+ff08 Ps FULLWIDTH LEFT PARENTHESIS (
U+ff09 Pe FULLWIDTH RIGHT PARENTHESIS )
U+ff3b Ps FULLWIDTH LEFT SQUARE BRACKET [
U+ff3d Pe FULLWIDTH RIGHT SQUARE BRACKET ]
U+ff5b Ps FULLWIDTH LEFT CURLY BRACKET {
U+ff5d Pe FULLWIDTH RIGHT CURLY BRACKET }
U+ff5f Ps FULLWIDTH LEFT WHITE PARENTHESIS ⦅
U+ff60 Pe FULLWIDTH RIGHT WHITE PARENTHESIS ⦆
U+ff62 Ps HALFWIDTH LEFT CORNER BRACKET 「
U+ff63 Pe HALFWIDTH RIGHT CORNER BRACKET 」
Recent Unicode releases have added a property Bidi_Paired_Bracket that gives what Unicode thinks is the answer to this question. This is different from the ones that are mirrored. There are 60 bracket-pairs as of Unicode 8.0. The following table maps each to its mate. The first column gives a code point; the second gives the Unicode version it was introduced in; the third shows the mapping, and the final column gives the mapping by character name. Also, for looking at the Unicode character database, Perl5 is packaged with the module Unicode::UCD, with many functions for inspecting things, including new ones in Perl v5.22 that will output the value of all properties for a given code point. Unicode::Tussle on CPAN offers similar and other functionality
0028 1.1 '(' => ')'; LEFT PARENTHESIS => RIGHT PARENTHESIS
0029 1.1 ')' => '('; RIGHT PARENTHESIS => LEFT PARENTHESIS
005B 1.1 '[' => ']'; LEFT SQUARE BRACKET => RIGHT SQUARE BRACKET
005D 1.1 ']' => '['; RIGHT SQUARE BRACKET => LEFT SQUARE BRACKET
007B 1.1 '{' => '}'; LEFT CURLY BRACKET => RIGHT CURLY BRACKET
007D 1.1 '}' => '{'; RIGHT CURLY BRACKET => LEFT CURLY BRACKET
0F3A 2.0 '༺' => '༻'; TIBETAN MARK GUG RTAGS GYON => TIBETAN MARK GUG RTAGS GYAS
0F3B 2.0 '༻' => '༺'; TIBETAN MARK GUG RTAGS GYAS => TIBETAN MARK GUG RTAGS GYON
0F3C 2.0 '༼' => '༽'; TIBETAN MARK ANG KHANG GYON => TIBETAN MARK ANG KHANG GYAS
0F3D 2.0 '༽' => '༼'; TIBETAN MARK ANG KHANG GYAS => TIBETAN MARK ANG KHANG GYON
169B 3.0 '᚛' => '᚜'; OGHAM FEATHER MARK => OGHAM REVERSED FEATHER MARK
169C 3.0 '᚜' => '᚛'; OGHAM REVERSED FEATHER MARK => OGHAM FEATHER MARK
2045 1.1 '⁅' => '⁆'; LEFT SQUARE BRACKET WITH QUILL => RIGHT SQUARE BRACKET WITH QUILL
2046 1.1 '⁆' => '⁅'; RIGHT SQUARE BRACKET WITH QUILL => LEFT SQUARE BRACKET WITH QUILL
207D 1.1 '⁽' => '⁾'; SUPERSCRIPT LEFT PARENTHESIS => SUPERSCRIPT RIGHT PARENTHESIS
207E 1.1 '⁾' => '⁽'; SUPERSCRIPT RIGHT PARENTHESIS => SUPERSCRIPT LEFT PARENTHESIS
208D 1.1 '₍' => '₎'; SUBSCRIPT LEFT PARENTHESIS => SUBSCRIPT RIGHT PARENTHESIS
208E 1.1 '₎' => '₍'; SUBSCRIPT RIGHT PARENTHESIS => SUBSCRIPT LEFT PARENTHESIS
2308 1.1 '⌈' => '⌉'; LEFT CEILING => RIGHT CEILING
2309 1.1 '⌉' => '⌈'; RIGHT CEILING => LEFT CEILING
230A 1.1 '⌊' => '⌋'; LEFT FLOOR => RIGHT FLOOR
230B 1.1 '⌋' => '⌊'; RIGHT FLOOR => LEFT FLOOR
2329 1.1 '〈' => '〉'; LEFT-POINTING ANGLE BRACKET => RIGHT-POINTING ANGLE BRACKET
232A 1.1 '〉' => '〈'; RIGHT-POINTING ANGLE BRACKET => LEFT-POINTING ANGLE BRACKET
2768 3.2 '❨' => '❩'; MEDIUM LEFT PARENTHESIS ORNAMENT => MEDIUM RIGHT PARENTHESIS ORNAMENT
2769 3.2 '❩' => '❨'; MEDIUM RIGHT PARENTHESIS ORNAMENT => MEDIUM LEFT PARENTHESIS ORNAMENT
276A 3.2 '❪' => '❫'; MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT => MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
276B 3.2 '❫' => '❪'; MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT => MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
276C 3.2 '❬' => '❭'; MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT => MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
276D 3.2 '❭' => '❬'; MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT => MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
276E 3.2 '❮' => '❯'; HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT => HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
276F 3.2 '❯' => '❮'; HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT => HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
2770 3.2 '❰' => '❱'; HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT => HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
2771 3.2 '❱' => '❰'; HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT => HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
2772 3.2 '❲' => '❳'; LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT => LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
2773 3.2 '❳' => '❲'; LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT => LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
2774 3.2 '❴' => '❵'; MEDIUM LEFT CURLY BRACKET ORNAMENT => MEDIUM RIGHT CURLY BRACKET ORNAMENT
2775 3.2 '❵' => '❴'; MEDIUM RIGHT CURLY BRACKET ORNAMENT => MEDIUM LEFT CURLY BRACKET ORNAMENT
27C5 4.1 '⟅' => '⟆'; LEFT S-SHAPED BAG DELIMITER => RIGHT S-SHAPED BAG DELIMITER
27C6 4.1 '⟆' => '⟅'; RIGHT S-SHAPED BAG DELIMITER => LEFT S-SHAPED BAG DELIMITER
27E6 3.2 '⟦' => '⟧'; MATHEMATICAL LEFT WHITE SQUARE BRACKET => MATHEMATICAL RIGHT WHITE SQUARE BRACKET
27E7 3.2 '⟧' => '⟦'; MATHEMATICAL RIGHT WHITE SQUARE BRACKET => MATHEMATICAL LEFT WHITE SQUARE BRACKET
27E8 3.2 '⟨' => '⟩'; MATHEMATICAL LEFT ANGLE BRACKET => MATHEMATICAL RIGHT ANGLE BRACKET
27E9 3.2 '⟩' => '⟨'; MATHEMATICAL RIGHT ANGLE BRACKET => MATHEMATICAL LEFT ANGLE BRACKET
27EA 3.2 '⟪' => '⟫'; MATHEMATICAL LEFT DOUBLE ANGLE BRACKET => MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
27EB 3.2 '⟫' => '⟪'; MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET => MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
27EC 5.1 '⟬' => '⟭'; MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET => MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET
27ED 5.1 '⟭' => '⟬'; MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET => MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET
27EE 5.1 '⟮' => '⟯'; MATHEMATICAL LEFT FLATTENED PARENTHESIS => MATHEMATICAL RIGHT FLATTENED PARENTHESIS
27EF 5.1 '⟯' => '⟮'; MATHEMATICAL RIGHT FLATTENED PARENTHESIS => MATHEMATICAL LEFT FLATTENED PARENTHESIS
2983 3.2 '⦃' => '⦄'; LEFT WHITE CURLY BRACKET => RIGHT WHITE CURLY BRACKET
2984 3.2 '⦄' => '⦃'; RIGHT WHITE CURLY BRACKET => LEFT WHITE CURLY BRACKET
2985 3.2 '⦅' => '⦆'; LEFT WHITE PARENTHESIS => RIGHT WHITE PARENTHESIS
2986 3.2 '⦆' => '⦅'; RIGHT WHITE PARENTHESIS => LEFT WHITE PARENTHESIS
2987 3.2 '⦇' => '⦈'; Z NOTATION LEFT IMAGE BRACKET => Z NOTATION RIGHT IMAGE BRACKET
2988 3.2 '⦈' => '⦇'; Z NOTATION RIGHT IMAGE BRACKET => Z NOTATION LEFT IMAGE BRACKET
2989 3.2 '⦉' => '⦊'; Z NOTATION LEFT BINDING BRACKET => Z NOTATION RIGHT BINDING BRACKET
298A 3.2 '⦊' => '⦉'; Z NOTATION RIGHT BINDING BRACKET => Z NOTATION LEFT BINDING BRACKET
298B 3.2 '⦋' => '⦌'; LEFT SQUARE BRACKET WITH UNDERBAR => RIGHT SQUARE BRACKET WITH UNDERBAR
298C 3.2 '⦌' => '⦋'; RIGHT SQUARE BRACKET WITH UNDERBAR => LEFT SQUARE BRACKET WITH UNDERBAR
298D 3.2 '⦍' => '⦐'; LEFT SQUARE BRACKET WITH TICK IN TOP CORNER => RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
298E 3.2 '⦎' => '⦏'; RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER => LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
298F 3.2 '⦏' => '⦎'; LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER => RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
2990 3.2 '⦐' => '⦍'; RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER => LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
2991 3.2 '⦑' => '⦒'; LEFT ANGLE BRACKET WITH DOT => RIGHT ANGLE BRACKET WITH DOT
2992 3.2 '⦒' => '⦑'; RIGHT ANGLE BRACKET WITH DOT => LEFT ANGLE BRACKET WITH DOT
2993 3.2 '⦓' => '⦔'; LEFT ARC LESS-THAN BRACKET => RIGHT ARC GREATER-THAN BRACKET
2994 3.2 '⦔' => '⦓'; RIGHT ARC GREATER-THAN BRACKET => LEFT ARC LESS-THAN BRACKET
2995 3.2 '⦕' => '⦖'; DOUBLE LEFT ARC GREATER-THAN BRACKET => DOUBLE RIGHT ARC LESS-THAN BRACKET
2996 3.2 '⦖' => '⦕'; DOUBLE RIGHT ARC LESS-THAN BRACKET => DOUBLE LEFT ARC GREATER-THAN BRACKET
2997 3.2 '⦗' => '⦘'; LEFT BLACK TORTOISE SHELL BRACKET => RIGHT BLACK TORTOISE SHELL BRACKET
2998 3.2 '⦘' => '⦗'; RIGHT BLACK TORTOISE SHELL BRACKET => LEFT BLACK TORTOISE SHELL BRACKET
29D8 3.2 '⧘' => '⧙'; LEFT WIGGLY FENCE => RIGHT WIGGLY FENCE
29D9 3.2 '⧙' => '⧘'; RIGHT WIGGLY FENCE => LEFT WIGGLY FENCE
29DA 3.2 '⧚' => '⧛'; LEFT DOUBLE WIGGLY FENCE => RIGHT DOUBLE WIGGLY FENCE
29DB 3.2 '⧛' => '⧚'; RIGHT DOUBLE WIGGLY FENCE => LEFT DOUBLE WIGGLY FENCE
29FC 3.2 '⧼' => '⧽'; LEFT-POINTING CURVED ANGLE BRACKET => RIGHT-POINTING CURVED ANGLE BRACKET
29FD 3.2 '⧽' => '⧼'; RIGHT-POINTING CURVED ANGLE BRACKET => LEFT-POINTING CURVED ANGLE BRACKET
2E22 5.1 '⸢' => '⸣'; TOP LEFT HALF BRACKET => TOP RIGHT HALF BRACKET
2E23 5.1 '⸣' => '⸢'; TOP RIGHT HALF BRACKET => TOP LEFT HALF BRACKET
2E24 5.1 '⸤' => '⸥'; BOTTOM LEFT HALF BRACKET => BOTTOM RIGHT HALF BRACKET
2E25 5.1 '⸥' => '⸤'; BOTTOM RIGHT HALF BRACKET => BOTTOM LEFT HALF BRACKET
2E26 5.1 '⸦' => '⸧'; LEFT SIDEWAYS U BRACKET => RIGHT SIDEWAYS U BRACKET
2E27 5.1 '⸧' => '⸦'; RIGHT SIDEWAYS U BRACKET => LEFT SIDEWAYS U BRACKET
2E28 5.1 '⸨' => '⸩'; LEFT DOUBLE PARENTHESIS => RIGHT DOUBLE PARENTHESIS
2E29 5.1 '⸩' => '⸨'; RIGHT DOUBLE PARENTHESIS => LEFT DOUBLE PARENTHESIS
3008 1.1 '〈' => '〉'; LEFT ANGLE BRACKET => RIGHT ANGLE BRACKET
3009 1.1 '〉' => '〈'; RIGHT ANGLE BRACKET => LEFT ANGLE BRACKET
300A 1.1 '《' => '》'; LEFT DOUBLE ANGLE BRACKET => RIGHT DOUBLE ANGLE BRACKET
300B 1.1 '》' => '《'; RIGHT DOUBLE ANGLE BRACKET => LEFT DOUBLE ANGLE BRACKET
300C 1.1 '「' => '」'; LEFT CORNER BRACKET => RIGHT CORNER BRACKET
300D 1.1 '」' => '「'; RIGHT CORNER BRACKET => LEFT CORNER BRACKET
300E 1.1 '『' => '』'; LEFT WHITE CORNER BRACKET => RIGHT WHITE CORNER BRACKET
300F 1.1 '』' => '『'; RIGHT WHITE CORNER BRACKET => LEFT WHITE CORNER BRACKET
3010 1.1 '【' => '】'; LEFT BLACK LENTICULAR BRACKET => RIGHT BLACK LENTICULAR BRACKET
3011 1.1 '】' => '【'; RIGHT BLACK LENTICULAR BRACKET => LEFT BLACK LENTICULAR BRACKET
3014 1.1 '〔' => '〕'; LEFT TORTOISE SHELL BRACKET => RIGHT TORTOISE SHELL BRACKET
3015 1.1 '〕' => '〔'; RIGHT TORTOISE SHELL BRACKET => LEFT TORTOISE SHELL BRACKET
3016 1.1 '〖' => '〗'; LEFT WHITE LENTICULAR BRACKET => RIGHT WHITE LENTICULAR BRACKET
3017 1.1 '〗' => '〖'; RIGHT WHITE LENTICULAR BRACKET => LEFT WHITE LENTICULAR BRACKET
3018 1.1 '〘' => '〙'; LEFT WHITE TORTOISE SHELL BRACKET => RIGHT WHITE TORTOISE SHELL BRACKET
3019 1.1 '〙' => '〘'; RIGHT WHITE TORTOISE SHELL BRACKET => LEFT WHITE TORTOISE SHELL BRACKET
301A 1.1 '〚' => '〛'; LEFT WHITE SQUARE BRACKET => RIGHT WHITE SQUARE BRACKET
301B 1.1 '〛' => '〚'; RIGHT WHITE SQUARE BRACKET => LEFT WHITE SQUARE BRACKET
FE59 1.1 '﹙' => '﹚'; SMALL LEFT PARENTHESIS => SMALL RIGHT PARENTHESIS
FE5A 1.1 '﹚' => '﹙'; SMALL RIGHT PARENTHESIS => SMALL LEFT PARENTHESIS
FE5B 1.1 '﹛' => '﹜'; SMALL LEFT CURLY BRACKET => SMALL RIGHT CURLY BRACKET
FE5C 1.1 '﹜' => '﹛'; SMALL RIGHT CURLY BRACKET => SMALL LEFT CURLY BRACKET
FE5D 1.1 '﹝' => '﹞'; SMALL LEFT TORTOISE SHELL BRACKET => SMALL RIGHT TORTOISE SHELL BRACKET
FE5E 1.1 '﹞' => '﹝'; SMALL RIGHT TORTOISE SHELL BRACKET => SMALL LEFT TORTOISE SHELL BRACKET
FF08 1.1 '(' => ')'; FULLWIDTH LEFT PARENTHESIS => FULLWIDTH RIGHT PARENTHESIS
FF09 1.1 ')' => '('; FULLWIDTH RIGHT PARENTHESIS => FULLWIDTH LEFT PARENTHESIS
FF3B 1.1 '[' => ']'; FULLWIDTH LEFT SQUARE BRACKET => FULLWIDTH RIGHT SQUARE BRACKET
FF3D 1.1 ']' => '['; FULLWIDTH RIGHT SQUARE BRACKET => FULLWIDTH LEFT SQUARE BRACKET
FF5B 1.1 '{' => '}'; FULLWIDTH LEFT CURLY BRACKET => FULLWIDTH RIGHT CURLY BRACKET
FF5D 1.1 '}' => '{'; FULLWIDTH RIGHT CURLY BRACKET => FULLWIDTH LEFT CURLY BRACKET
FF5F 3.2 '⦅' => '⦆'; FULLWIDTH LEFT WHITE PARENTHESIS => FULLWIDTH RIGHT WHITE PARENTHESIS
FF60 3.2 '⦆' => '⦅'; FULLWIDTH RIGHT WHITE PARENTHESIS => FULLWIDTH LEFT WHITE PARENTHESIS
FF62 1.1 '「' => '」'; HALFWIDTH LEFT CORNER BRACKET => HALFWIDTH RIGHT CORNER BRACKET
FF63 1.1 '」' => '「'; HALFWIDTH RIGHT CORNER BRACKET => HALFWIDTH LEFT CORNER BRACKET
If you want to pick up characters like < and > that are not formally considered grouping symbols you could take a look at http://www.unicode.org/Public/UNIDATA/BidiMirroring.txt as suggested by #roeland here. That file lists all pairs of characters which should be mirror images of each other.
Here's the full list:
( ) # { LEFT, RIGHT } PARENTHESIS
< > # { LESS-THAN, GREATER-THAN } SIGN
[ ] # { LEFT, RIGHT } SQUARE BRACKET
{ } # { LEFT, RIGHT } CURLY BRACKET
« » # { LEFT-POINTING, RIGHT-POINTING } DOUBLE ANGLE QUOTATION MARK
༺ ༻ # TIBETAN MARK GUG RTAGS { GYON, GYAS }
༼ ༽ # TIBETAN MARK ANG KHANG { GYON, GYAS }
᚛ ᚜ # OGHAM { , REVERSED } FEATHER MARK
‹ › # SINGLE { LEFT-POINTING, RIGHT-POINTING } ANGLE QUOTATION MARK
⁅ ⁆ # { LEFT, RIGHT } SQUARE BRACKET WITH QUILL
⁽ ⁾ # SUPERSCRIPT { LEFT, RIGHT } PARENTHESIS
₍ ₎ # SUBSCRIPT { LEFT, RIGHT } PARENTHESIS
∈ ∋ # { ELEMENT OF, CONTAINS AS MEMBER }
∉ ∌ # { NOT AN ELEMENT OF, DOES NOT CONTAIN AS MEMBER }
∊ ∍ # SMALL { ELEMENT OF, CONTAINS AS MEMBER }
∼ ∽ # { TILDE OPERATOR, REVERSED TILDE }
≒ ≓ # { APPROXIMATELY EQUAL TO OR THE IMAGE OF, IMAGE OF OR APPROXIMATELY EQUAL TO }
≔ ≕ # { COLON EQUALS, EQUALS COLON }
≤ ≥ # { LESS-THAN, GREATER-THAN } OR EQUAL TO
≦ ≧ # { LESS-THAN, GREATER-THAN } OVER EQUAL TO
≪ ≫ # MUCH { LESS-THAN, GREATER-THAN }
≶ ≷ # { LESS-THAN OR GREATER-THAN, GREATER-THAN OR LESS-THAN }
≺ ≻ # { PRECEDES, SUCCEEDS }
≼ ≽ # { PRECEDES, SUCCEEDS } OR EQUAL TO
⊂ ⊃ # { SUBSET, SUPERSET } OF
⊆ ⊇ # { SUBSET, SUPERSET } OF OR EQUAL TO
⊏ ⊐ # SQUARE { IMAGE, ORIGINAL } OF
⊑ ⊒ # SQUARE { IMAGE, ORIGINAL } OF OR EQUAL TO
⊢ ⊣ # { RIGHT, LEFT } TACK
⊰ ⊱ # { PRECEDES, SUCCEEDS } UNDER RELATION
⊲ ⊳ # { NORMAL SUBGROUP OF, CONTAINS AS NORMAL SUBGROUP }
⊴ ⊵ # { NORMAL SUBGROUP OF, CONTAINS AS NORMAL SUBGROUP } OR EQUAL TO
⊶ ⊷ # { ORIGINAL, IMAGE } OF
⋉ ⋊ # { LEFT, RIGHT } NORMAL FACTOR SEMIDIRECT PRODUCT
⋋ ⋌ # { LEFT, RIGHT } SEMIDIRECT PRODUCT
≃ ⋍ # { ASYMPTOTICALLY EQUAL TO, REVERSED TILDE EQUALS }
⋐ ⋑ # DOUBLE { SUBSET, SUPERSET }
⋖ ⋗ # { LESS-THAN, GREATER-THAN } WITH DOT
⋘ ⋙ # VERY MUCH { LESS-THAN, GREATER-THAN }
⋚ ⋛ # { LESS-THAN EQUAL TO OR GREATER-THAN, GREATER-THAN EQUAL TO OR LESS-THAN }
⋜ ⋝ # EQUAL TO OR { LESS-THAN, GREATER-THAN }
⋞ ⋟ # EQUAL TO OR { PRECEDES, SUCCEEDS }
⋰ ⋱ # { UP, DOWN } RIGHT DIAGONAL ELLIPSIS
⋲ ⋺ # { ELEMENT OF, CONTAINS } WITH LONG HORIZONTAL STROKE
⋳ ⋻ # { ELEMENT OF, CONTAINS } WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
⋴ ⋼ # SMALL { ELEMENT OF, CONTAINS } WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
⋶ ⋽ # { ELEMENT OF, CONTAINS } WITH OVERBAR
⋷ ⋾ # SMALL { ELEMENT OF, CONTAINS } WITH OVERBAR
⌈ ⌉ # { LEFT, RIGHT } CEILING
⌊ ⌋ # { LEFT, RIGHT } FLOOR
〈 〉 # { LEFT-POINTING, RIGHT-POINTING } ANGLE BRACKET
❨ ❩ # MEDIUM { LEFT, RIGHT } PARENTHESIS ORNAMENT
❪ ❫ # MEDIUM FLATTENED { LEFT, RIGHT } PARENTHESIS ORNAMENT
❬ ❭ # MEDIUM { LEFT-POINTING, RIGHT-POINTING } ANGLE BRACKET ORNAMENT
❮ ❯ # HEAVY { LEFT-POINTING, RIGHT-POINTING } ANGLE QUOTATION MARK ORNAMENT
❰ ❱ # HEAVY { LEFT-POINTING, RIGHT-POINTING } ANGLE BRACKET ORNAMENT
❲ ❳ # LIGHT { LEFT, RIGHT } TORTOISE SHELL BRACKET ORNAMENT
❴ ❵ # MEDIUM { LEFT, RIGHT } CURLY BRACKET ORNAMENT
⟃ ⟄ # OPEN { SUBSET, SUPERSET }
⟅ ⟆ # { LEFT, RIGHT } S-SHAPED BAG DELIMITER
⟈ ⟉ # { REVERSE SOLIDUS PRECEDING SUBSET, SUPERSET PRECEDING SOLIDUS }
⟋ ⟍ # MATHEMATICAL { RISING, FALLING } DIAGONAL
⟕ ⟖ # { LEFT, RIGHT } OUTER JOIN
⟝ ⟞ # LONG { RIGHT, LEFT } TACK
⟢ ⟣ # WHITE CONCAVE-SIDED DIAMOND WITH { LEFTWARDS, RIGHTWARDS } TICK
⟤ ⟥ # WHITE SQUARE WITH { LEFTWARDS, RIGHTWARDS } TICK
⟦ ⟧ # MATHEMATICAL { LEFT, RIGHT } WHITE SQUARE BRACKET
⟨ ⟩ # MATHEMATICAL { LEFT, RIGHT } ANGLE BRACKET
⟪ ⟫ # MATHEMATICAL { LEFT, RIGHT } DOUBLE ANGLE BRACKET
⟬ ⟭ # MATHEMATICAL { LEFT, RIGHT } WHITE TORTOISE SHELL BRACKET
⟮ ⟯ # MATHEMATICAL { LEFT, RIGHT } FLATTENED PARENTHESIS
⦃ ⦄ # { LEFT, RIGHT } WHITE CURLY BRACKET
⦅ ⦆ # { LEFT, RIGHT } WHITE PARENTHESIS
⦇ ⦈ # Z NOTATION { LEFT, RIGHT } IMAGE BRACKET
⦉ ⦊ # Z NOTATION { LEFT, RIGHT } BINDING BRACKET
⦋ ⦌ # { LEFT, RIGHT } SQUARE BRACKET WITH UNDERBAR
⦎ ⦏ # { RIGHT, LEFT } SQUARE BRACKET WITH TICK IN BOTTOM CORNER
⦍ ⦐ # { LEFT, RIGHT } SQUARE BRACKET WITH TICK IN TOP CORNER
⦑ ⦒ # { LEFT, RIGHT } ANGLE BRACKET WITH DOT
⦓ ⦔ # { LEFT ARC LESS-THAN, RIGHT ARC GREATER-THAN } BRACKET
⦕ ⦖ # DOUBLE { LEFT ARC GREATER-THAN, RIGHT ARC LESS-THAN } BRACKET
⦗ ⦘ # { LEFT, RIGHT } BLACK TORTOISE SHELL BRACKET
⊘ ⦸ # CIRCLED { DIVISION SLASH, REVERSE SOLIDUS }
⧀ ⧁ # CIRCLED { LESS-THAN, GREATER-THAN }
⧄ ⧅ # SQUARED { RISING, FALLING } DIAGONAL SLASH
⧏ ⧐ # { LEFT TRIANGLE BESIDE VERTICAL BAR, VERTICAL BAR BESIDE RIGHT TRIANGLE }
⧑ ⧒ # BOWTIE WITH { LEFT, RIGHT } HALF BLACK
⧔ ⧕ # TIMES WITH { LEFT, RIGHT } HALF BLACK
⧘ ⧙ # { LEFT, RIGHT } WIGGLY FENCE
⧚ ⧛ # { LEFT, RIGHT } DOUBLE WIGGLY FENCE
∕ ⧵ # { DIVISION SLASH, REVERSE SOLIDUS OPERATOR }
⧸ ⧹ # BIG { , REVERSE } SOLIDUS
⧼ ⧽ # { LEFT-POINTING, RIGHT-POINTING } CURVED ANGLE BRACKET
⨫ ⨬ # MINUS SIGN WITH { FALLING, RISING } DOTS
⨭ ⨮ # PLUS SIGN IN { LEFT, RIGHT } HALF CIRCLE
⨴ ⨵ # MULTIPLICATION SIGN IN { LEFT, RIGHT } HALF CIRCLE
⨼ ⨽ # { , RIGHTHAND } INTERIOR PRODUCT
⩤ ⩥ # Z NOTATION { DOMAIN, RANGE } ANTIRESTRICTION
⩹ ⩺ # { LESS-THAN, GREATER-THAN } WITH CIRCLE INSIDE
⩽ ⩾ # { LESS-THAN, GREATER-THAN } OR SLANTED EQUAL TO
⩿ ⪀ # { LESS-THAN, GREATER-THAN } OR SLANTED EQUAL TO WITH DOT INSIDE
⪁ ⪂ # { LESS-THAN, GREATER-THAN } OR SLANTED EQUAL TO WITH DOT ABOVE
⪃ ⪄ # { LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT, GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT }
⪋ ⪌ # { LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN, GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN }
⪑ ⪒ # { LESS-THAN ABOVE GREATER-THAN, GREATER-THAN ABOVE LESS-THAN } ABOVE DOUBLE-LINE EQUAL
⪓ ⪔ # { LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN, GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN } ABOVE SLANTED EQUAL
⪕ ⪖ # SLANTED EQUAL TO OR { LESS-THAN, GREATER-THAN }
⪗ ⪘ # SLANTED EQUAL TO OR { LESS-THAN, GREATER-THAN } WITH DOT INSIDE
⪙ ⪚ # DOUBLE-LINE EQUAL TO OR { LESS-THAN, GREATER-THAN }
⪛ ⪜ # DOUBLE-LINE SLANTED EQUAL TO OR { LESS-THAN, GREATER-THAN }
⪡ ⪢ # DOUBLE NESTED { LESS-THAN, GREATER-THAN }
⪦ ⪧ # { LESS-THAN, GREATER-THAN } CLOSED BY CURVE
⪨ ⪩ # { LESS-THAN, GREATER-THAN } CLOSED BY CURVE ABOVE SLANTED EQUAL
⪪ ⪫ # { SMALLER, LARGER } THAN
⪬ ⪭ # { SMALLER, LARGER } THAN OR EQUAL TO
⪯ ⪰ # { PRECEDES, SUCCEEDS } ABOVE SINGLE-LINE EQUALS SIGN
⪳ ⪴ # { PRECEDES, SUCCEEDS } ABOVE EQUALS SIGN
⪻ ⪼ # DOUBLE { PRECEDES, SUCCEEDS }
⪽ ⪾ # { SUBSET, SUPERSET } WITH DOT
⪿ ⫀ # { SUBSET, SUPERSET } WITH PLUS SIGN BELOW
⫁ ⫂ # { SUBSET, SUPERSET } WITH MULTIPLICATION SIGN BELOW
⫃ ⫄ # { SUBSET, SUPERSET } OF OR EQUAL TO WITH DOT ABOVE
⫅ ⫆ # { SUBSET, SUPERSET } OF ABOVE EQUALS SIGN
⫍ ⫎ # SQUARE { LEFT, RIGHT } OPEN BOX OPERATOR
⫏ ⫐ # CLOSED { SUBSET, SUPERSET }
⫑ ⫒ # CLOSED { SUBSET, SUPERSET } OR EQUAL TO
⫓ ⫔ # { SUBSET ABOVE SUPERSET, SUPERSET ABOVE SUBSET }
⫕ ⫖ # { SUBSET ABOVE SUBSET, SUPERSET ABOVE SUPERSET }
⊦ ⫞ # { ASSERTION, SHORT LEFT TACK }
⊩ ⫣ # { FORCES, DOUBLE VERTICAL BAR LEFT TURNSTILE }
⊨ ⫤ # { TRUE, VERTICAL BAR DOUBLE LEFT TURNSTILE }
⊫ ⫥ # DOUBLE VERTICAL BAR DOUBLE { RIGHT, LEFT } TURNSTILE
⫬ ⫭ # { , REVERSED } DOUBLE STROKE NOT SIGN
⫷ ⫸ # TRIPLE NESTED { LESS-THAN, GREATER-THAN }
⫹ ⫺ # DOUBLE-LINE SLANTED { LESS-THAN, GREATER-THAN } OR EQUAL TO
⸂ ⸃ # { LEFT, RIGHT } SUBSTITUTION BRACKET
⸄ ⸅ # { LEFT, RIGHT } DOTTED SUBSTITUTION BRACKET
⸉ ⸊ # { LEFT, RIGHT } TRANSPOSITION BRACKET
⸌ ⸍ # { LEFT, RIGHT } RAISED OMISSION BRACKET
⸜ ⸝ # { LEFT, RIGHT } LOW PARAPHRASE BRACKET
⸠ ⸡ # { LEFT, RIGHT } VERTICAL BAR WITH QUILL
⸢ ⸣ # TOP { LEFT, RIGHT } HALF BRACKET
⸤ ⸥ # BOTTOM { LEFT, RIGHT } HALF BRACKET
⸦ ⸧ # { LEFT, RIGHT } SIDEWAYS U BRACKET
⸨ ⸩ # { LEFT, RIGHT } DOUBLE PARENTHESIS
〈 〉 # { LEFT, RIGHT } ANGLE BRACKET
《 》 # { LEFT, RIGHT } DOUBLE ANGLE BRACKET
【 】 # { LEFT, RIGHT } BLACK LENTICULAR BRACKET
〔 〕 # { LEFT, RIGHT } TORTOISE SHELL BRACKET
〖 〗 # { LEFT, RIGHT } WHITE LENTICULAR BRACKET
〘 〙 # { LEFT, RIGHT } WHITE TORTOISE SHELL BRACKET
〚 〛 # { LEFT, RIGHT } WHITE SQUARE BRACKET
﹙ ﹚ # SMALL { LEFT, RIGHT } PARENTHESIS
﹛ ﹜ # SMALL { LEFT, RIGHT } CURLY BRACKET
﹝ ﹞ # SMALL { LEFT, RIGHT } TORTOISE SHELL BRACKET
﹤ ﹥ # SMALL { LESS-THAN, GREATER-THAN } SIGN
( ) # FULLWIDTH { LEFT, RIGHT } PARENTHESIS
< > # FULLWIDTH { LESS-THAN, GREATER-THAN } SIGN
[ ] # FULLWIDTH { LEFT, RIGHT } SQUARE BRACKET
{ } # FULLWIDTH { LEFT, RIGHT } CURLY BRACKET
⦅ ⦆ # FULLWIDTH { LEFT, RIGHT } WHITE PARENTHESIS
What is a good way to search for unicode characters?
This - obviously - depends on what exactly you plan to do. I build the website http://write-math.com. During my bachelors thesis, I created a symbol classifier (which is now on this website under "classify") which gives users the possibility to draw a symbol and get the LaTeX / unicode result (currently only 369 symbols are supported). This is very nice if you want to typeset a document and search single, specific characters of which you know how they look like / how they are called but not how to write them with LaTeX (or whatever you use for typesetting):
It also has a symbol search feature. It's still in heavy development, but there are 1166 symbols in this database.
For your brackets:
http://www.martin-thoma.de/write-math/search/?search=bracket
http://www.martin-thoma.de/write-math/search/?search=parenthesis
unicode.xml (from http://www.w3.org/2003/entities/2007doc/#source) is also worth a try.
The idea of “bracket-like” characters might be more or less be identified with the General Category (gc) property values of Ps (Punctuation, open) and Pe (Punctuation, close). This category contains a few dozens of paired punctuation marks, mostly excluding quotation marks (categories Pi and Pf).
In programming, many languages have tools for testing for the General Category of a character, e.g. \p{Ps} in Perl.
If you just need some lists, you could use the Unicode Character Categories information at fileformat.info.
Generally, the way to search for Unicode characters depends on what you are looking for and on your criteria. General Category is a good starting point in many cases.
http://xahlee.info/comp/unicode_matching_brackets.html
This is an excellent and very comprehensive website (for brackets and everything else too), and it looks like they display them all using Arial, sans-serif, so if you can see the character, then it should work with good browser support.
Because andrewdotn's answer uses Python 2, here's the Python 3 version:
import re
import unicodedata
for i in range(0x10000):
char = chr(i)
category = unicodedata.category(char)
name = unicodedata.name(char, '')
if ('bracket' in name.lower() or 'paren' in name.lower()
or category in ['Ps', 'Pe']):
print('U+%04x %s %s %c' % (i, category, name, char))
Related
How can I remove square bracket using regexp in postgresql
my_Query - SELECT (regexp_matches('datavalue=Document{{value=[5]}}', 'datavalue=Document{{value=([^d}},'']+)'))[1] response; current output is square bracket - [5] I require without square bracket - 5
To extract a part of a string based on a regex, substring() is the better alternative: substring('datavalue=Document{{value=[5]}}' from 'datavalue=Document{{value=\[([0-9]+)\]}}') response;
How to prefer highlighting inner parenthesizes instead of outer?
Visual Studio Code automatically highlights the outer parenthesizes as show as in this picture: How can I change it to highlight the inner parenthesizes like this as seen in Notepad++:
Bracket pair colorization will be built-in to vscode 1.60. enable Editor > Bracket Pair Colorization: Enabled Select some colors for the bracket pairs in your settings: { "workbench.colorCustomizations": { "editorBracketHighlight.foreground1": "#ff00d4", "editorBracketHighlight.foreground2": "#66ff00", "editorBracketHighlight.foreground3": "#ffd000", // up to 6 "editorBracketHighlight.unexpectedBracket.foreground": "#ff0000" } } That will highlight both of the bracket pairs you showed in your example. If you didn't want, for example, the outer pair colored just don't assign a color to that bracket pair. In your case, probably pair 2 if enclosed in some outer function. The highlighting of the brackets you referred to is something else. If you click inside the inner pair then those brackets would be highlighted. Think of them as the focussed brackets. That color is controlled by: { "workbench.colorCustomizations": { "editorBracketMatch.background": "#ff0000", "editorBracketMatch.border": "#ff0000" } }
You may love to use this extension
Use sed to replace `,` within brackets
I'd like to replace commas within brackets with spaces (and also remove the brackets). I used sed, but the solution I could come up to is dependent on the elements in the list. sed 's/\[\(.*\), \(.*\)\]/\1 \2/g' # [-0.0, 1.23] => -0.0 1.23 (works) # [-0.0, 1.23, 4.56] => -0.0, 1.23 4.56 (doesn't work) # foo=[12.3, 4.5, 3.0, 4.1], bar=123.0, xyz=6.7 => foo=12.3, 4.5, 3.0 4.1, bar=123.0, xyz=6.7` (doesn't work, expected: foo=12.3 4.5 3.0 4.1, bar=123.0, xyz=6.7) Is there any way sed can be used to do what I want?
Consider this test file: $ cat file [-0.0, 1.23] [-0.0, 1.23, 4.56] foo=[12.3, 4.5, 3.0, 4.1], bar=123.0, xyz=6.7 [1,2,-3,4] To remove any commas within square brackets and also the remove square brackets: $ sed -E ':a; s/(\[[^],]*), */\1 /; ta; s/\[([^]]*)\]/\1/g' file -0.0 1.23 -0.0 1.23 4.56 foo=12.3 4.5 3.0 4.1, bar=123.0, xyz=6.7 1 2 -3 4 How it works :a This defines a label a. s/(\[[^],]*), */\1 / This looks for the first comma within a square bracket and removes it. [^],] matches any character except ] or ,. Thus, (\[[^],]*) matches [ followed by any number of characters not ] or , and stores the result in group 1. ta If the above substitution resulted in a change, jump back to label a so we can try the substitution again. s/\[([^]]*)\]/\1/g After we have finished removing commas, this removes the square brackets. Note that [^]] matches any character that is not ]. Thus \[([^]]*)\] matches a [ followed by any number of any character except ] followed by ]. In other words, it matches a single bracketed expression and the contents of the expression, excluding the square brackets, are stored in group 1.
List of all unicode's open/close brackets?
What is a list of every unicode bracket-like characters (including, for example: {}[]()<>)? What is a good way to search for unicode characters?
There is a plain-text database of information about every Unicode character available from the Unicode Consortium; the format is described in Unicode Annex #44. The primary information is contained in UnicodeData.txt. Open and close punctuation characters are denoted with Ps (punctuation start) and Pe (punctuation end) in the General_Category field (the third field, delimited by ;). Look for those character, and you'll find what you're looking for. Note that not all characters that you consider brackets may be listed; for instance, quotation marks (including "«»"). are indicated with Pi and Pf (initial and final punctuation), so you might want to include those as well. And some character, like < and >, are used as brackets in some contexts (such as HTML/XML), while they are considered math symbols (Sm) in UnicodeData.txt. Those you are going to have to find by hand; there is no pre-determined listing of those. Here's a quick Bash script to get this information, and its output. I've included both brackets and quotes. (note: on some Bash implementations UTF-8 printing has a bug that causes it to print U+00AB "«" and U+00BB "»" as "?", and some terminals don't have the ability to render all characters correctly.) while IFS=';' read number name category rest do if [[ "$category" =~ Ps|Pe|Pi|Pf ]] then printf "%s (U+%s, %s): \u"$number"\n" "$name" "$number" "$category" fi done <UnicodeData.txt LEFT PARENTHESIS (U+0028, Ps): ( RIGHT PARENTHESIS (U+0029, Pe): ) LEFT SQUARE BRACKET (U+005B, Ps): [ RIGHT SQUARE BRACKET (U+005D, Pe): ] LEFT CURLY BRACKET (U+007B, Ps): { RIGHT CURLY BRACKET (U+007D, Pe): } LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (U+00AB, Pi): « RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (U+00BB, Pf): » TIBETAN MARK GUG RTAGS GYON (U+0F3A, Ps): ༺ TIBETAN MARK GUG RTAGS GYAS (U+0F3B, Pe): ༻ TIBETAN MARK ANG KHANG GYON (U+0F3C, Ps): ༼ TIBETAN MARK ANG KHANG GYAS (U+0F3D, Pe): ༽ OGHAM FEATHER MARK (U+169B, Ps): ᚛ OGHAM REVERSED FEATHER MARK (U+169C, Pe): ᚜ LEFT SINGLE QUOTATION MARK (U+2018, Pi): ‘ RIGHT SINGLE QUOTATION MARK (U+2019, Pf): ’ SINGLE LOW-9 QUOTATION MARK (U+201A, Ps): ‚ SINGLE HIGH-REVERSED-9 QUOTATION MARK (U+201B, Pi): ‛ LEFT DOUBLE QUOTATION MARK (U+201C, Pi): “ RIGHT DOUBLE QUOTATION MARK (U+201D, Pf): ” DOUBLE LOW-9 QUOTATION MARK (U+201E, Ps): „ DOUBLE HIGH-REVERSED-9 QUOTATION MARK (U+201F, Pi): ‟ SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039, Pi): ‹ SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A, Pf): › LEFT SQUARE BRACKET WITH QUILL (U+2045, Ps): ⁅ RIGHT SQUARE BRACKET WITH QUILL (U+2046, Pe): ⁆ SUPERSCRIPT LEFT PARENTHESIS (U+207D, Ps): ⁽ SUPERSCRIPT RIGHT PARENTHESIS (U+207E, Pe): ⁾ SUBSCRIPT LEFT PARENTHESIS (U+208D, Ps): ₍ SUBSCRIPT RIGHT PARENTHESIS (U+208E, Pe): ₎ LEFT-POINTING ANGLE BRACKET (U+2329, Ps): 〈 RIGHT-POINTING ANGLE BRACKET (U+232A, Pe): 〉 MEDIUM LEFT PARENTHESIS ORNAMENT (U+2768, Ps): ❨ MEDIUM RIGHT PARENTHESIS ORNAMENT (U+2769, Pe): ❩ MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT (U+276A, Ps): ❪ MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT (U+276B, Pe): ❫ MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT (U+276C, Ps): ❬ MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT (U+276D, Pe): ❭ HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT (U+276E, Ps): ❮ HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT (U+276F, Pe): ❯ HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT (U+2770, Ps): ❰ HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT (U+2771, Pe): ❱ LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT (U+2772, Ps): ❲ LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT (U+2773, Pe): ❳ MEDIUM LEFT CURLY BRACKET ORNAMENT (U+2774, Ps): ❴ MEDIUM RIGHT CURLY BRACKET ORNAMENT (U+2775, Pe): ❵ LEFT S-SHAPED BAG DELIMITER (U+27C5, Ps): ⟅ RIGHT S-SHAPED BAG DELIMITER (U+27C6, Pe): ⟆ MATHEMATICAL LEFT WHITE SQUARE BRACKET (U+27E6, Ps): ⟦ MATHEMATICAL RIGHT WHITE SQUARE BRACKET (U+27E7, Pe): ⟧ MATHEMATICAL LEFT ANGLE BRACKET (U+27E8, Ps): ⟨ MATHEMATICAL RIGHT ANGLE BRACKET (U+27E9, Pe): ⟩ MATHEMATICAL LEFT DOUBLE ANGLE BRACKET (U+27EA, Ps): ⟪ MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET (U+27EB, Pe): ⟫ MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET (U+27EC, Ps): ⟬ MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET (U+27ED, Pe): ⟭ MATHEMATICAL LEFT FLATTENED PARENTHESIS (U+27EE, Ps): ⟮ MATHEMATICAL RIGHT FLATTENED PARENTHESIS (U+27EF, Pe): ⟯ LEFT WHITE CURLY BRACKET (U+2983, Ps): ⦃ RIGHT WHITE CURLY BRACKET (U+2984, Pe): ⦄ LEFT WHITE PARENTHESIS (U+2985, Ps): ⦅ RIGHT WHITE PARENTHESIS (U+2986, Pe): ⦆ Z NOTATION LEFT IMAGE BRACKET (U+2987, Ps): ⦇ Z NOTATION RIGHT IMAGE BRACKET (U+2988, Pe): ⦈ Z NOTATION LEFT BINDING BRACKET (U+2989, Ps): ⦉ Z NOTATION RIGHT BINDING BRACKET (U+298A, Pe): ⦊ LEFT SQUARE BRACKET WITH UNDERBAR (U+298B, Ps): ⦋ RIGHT SQUARE BRACKET WITH UNDERBAR (U+298C, Pe): ⦌ LEFT SQUARE BRACKET WITH TICK IN TOP CORNER (U+298D, Ps): ⦍ RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER (U+298E, Pe): ⦎ LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER (U+298F, Ps): ⦏ RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER (U+2990, Pe): ⦐ LEFT ANGLE BRACKET WITH DOT (U+2991, Ps): ⦑ RIGHT ANGLE BRACKET WITH DOT (U+2992, Pe): ⦒ LEFT ARC LESS-THAN BRACKET (U+2993, Ps): ⦓ RIGHT ARC GREATER-THAN BRACKET (U+2994, Pe): ⦔ DOUBLE LEFT ARC GREATER-THAN BRACKET (U+2995, Ps): ⦕ DOUBLE RIGHT ARC LESS-THAN BRACKET (U+2996, Pe): ⦖ LEFT BLACK TORTOISE SHELL BRACKET (U+2997, Ps): ⦗ RIGHT BLACK TORTOISE SHELL BRACKET (U+2998, Pe): ⦘ LEFT WIGGLY FENCE (U+29D8, Ps): ⧘ RIGHT WIGGLY FENCE (U+29D9, Pe): ⧙ LEFT DOUBLE WIGGLY FENCE (U+29DA, Ps): ⧚ RIGHT DOUBLE WIGGLY FENCE (U+29DB, Pe): ⧛ LEFT-POINTING CURVED ANGLE BRACKET (U+29FC, Ps): ⧼ RIGHT-POINTING CURVED ANGLE BRACKET (U+29FD, Pe): ⧽ LEFT SUBSTITUTION BRACKET (U+2E02, Pi): ⸂ RIGHT SUBSTITUTION BRACKET (U+2E03, Pf): ⸃ LEFT DOTTED SUBSTITUTION BRACKET (U+2E04, Pi): ⸄ RIGHT DOTTED SUBSTITUTION BRACKET (U+2E05, Pf): ⸅ LEFT TRANSPOSITION BRACKET (U+2E09, Pi): ⸉ RIGHT TRANSPOSITION BRACKET (U+2E0A, Pf): ⸊ LEFT RAISED OMISSION BRACKET (U+2E0C, Pi): ⸌ RIGHT RAISED OMISSION BRACKET (U+2E0D, Pf): ⸍ LEFT LOW PARAPHRASE BRACKET (U+2E1C, Pi): ⸜ RIGHT LOW PARAPHRASE BRACKET (U+2E1D, Pf): ⸝ LEFT VERTICAL BAR WITH QUILL (U+2E20, Pi): ⸠ RIGHT VERTICAL BAR WITH QUILL (U+2E21, Pf): ⸡ TOP LEFT HALF BRACKET (U+2E22, Ps): ⸢ TOP RIGHT HALF BRACKET (U+2E23, Pe): ⸣ BOTTOM LEFT HALF BRACKET (U+2E24, Ps): ⸤ BOTTOM RIGHT HALF BRACKET (U+2E25, Pe): ⸥ LEFT SIDEWAYS U BRACKET (U+2E26, Ps): ⸦ RIGHT SIDEWAYS U BRACKET (U+2E27, Pe): ⸧ LEFT DOUBLE PARENTHESIS (U+2E28, Ps): ⸨ RIGHT DOUBLE PARENTHESIS (U+2E29, Pe): ⸩ LEFT ANGLE BRACKET (U+3008, Ps): 〈 RIGHT ANGLE BRACKET (U+3009, Pe): 〉 LEFT DOUBLE ANGLE BRACKET (U+300A, Ps): 《 RIGHT DOUBLE ANGLE BRACKET (U+300B, Pe): 》 LEFT CORNER BRACKET (U+300C, Ps): 「 RIGHT CORNER BRACKET (U+300D, Pe): 」 LEFT WHITE CORNER BRACKET (U+300E, Ps): 『 RIGHT WHITE CORNER BRACKET (U+300F, Pe): 』 LEFT BLACK LENTICULAR BRACKET (U+3010, Ps): 【 RIGHT BLACK LENTICULAR BRACKET (U+3011, Pe): 】 LEFT TORTOISE SHELL BRACKET (U+3014, Ps): 〔 RIGHT TORTOISE SHELL BRACKET (U+3015, Pe): 〕 LEFT WHITE LENTICULAR BRACKET (U+3016, Ps): 〖 RIGHT WHITE LENTICULAR BRACKET (U+3017, Pe): 〗 LEFT WHITE TORTOISE SHELL BRACKET (U+3018, Ps): 〘 RIGHT WHITE TORTOISE SHELL BRACKET (U+3019, Pe): 〙 LEFT WHITE SQUARE BRACKET (U+301A, Ps): 〚 RIGHT WHITE SQUARE BRACKET (U+301B, Pe): 〛 REVERSED DOUBLE PRIME QUOTATION MARK (U+301D, Ps): 〝 DOUBLE PRIME QUOTATION MARK (U+301E, Pe): 〞 LOW DOUBLE PRIME QUOTATION MARK (U+301F, Pe): 〟 ORNATE LEFT PARENTHESIS (U+FD3E, Ps): ﴾ ORNATE RIGHT PARENTHESIS (U+FD3F, Pe): ﴿ PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET (U+FE17, Ps): ︗ PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET (U+FE18, Pe): ︘ PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS (U+FE35, Ps): ︵ PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS (U+FE36, Pe): ︶ PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET (U+FE37, Ps): ︷ PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET (U+FE38, Pe): ︸ PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET (U+FE39, Ps): ︹ PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET (U+FE3A, Pe): ︺ PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET (U+FE3B, Ps): ︻ PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET (U+FE3C, Pe): ︼ PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET (U+FE3D, Ps): ︽ PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET (U+FE3E, Pe): ︾ PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET (U+FE3F, Ps): ︿ PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET (U+FE40, Pe): ﹀ PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET (U+FE41, Ps): ﹁ PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET (U+FE42, Pe): ﹂ PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET (U+FE43, Ps): ﹃ PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET (U+FE44, Pe): ﹄ PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET (U+FE47, Ps): ﹇ PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET (U+FE48, Pe): ﹈ SMALL LEFT PARENTHESIS (U+FE59, Ps): ﹙ SMALL RIGHT PARENTHESIS (U+FE5A, Pe): ﹚ SMALL LEFT CURLY BRACKET (U+FE5B, Ps): ﹛ SMALL RIGHT CURLY BRACKET (U+FE5C, Pe): ﹜ SMALL LEFT TORTOISE SHELL BRACKET (U+FE5D, Ps): ﹝ SMALL RIGHT TORTOISE SHELL BRACKET (U+FE5E, Pe): ﹞ FULLWIDTH LEFT PARENTHESIS (U+FF08, Ps): ( FULLWIDTH RIGHT PARENTHESIS (U+FF09, Pe): ) FULLWIDTH LEFT SQUARE BRACKET (U+FF3B, Ps): [ FULLWIDTH RIGHT SQUARE BRACKET (U+FF3D, Pe): ] FULLWIDTH LEFT CURLY BRACKET (U+FF5B, Ps): { FULLWIDTH RIGHT CURLY BRACKET (U+FF5D, Pe): } FULLWIDTH LEFT WHITE PARENTHESIS (U+FF5F, Ps): ⦅ FULLWIDTH RIGHT WHITE PARENTHESIS (U+FF60, Pe): ⦆ HALFWIDTH LEFT CORNER BRACKET (U+FF62, Ps): 「 HALFWIDTH RIGHT CORNER BRACKET (U+FF63, Pe): 」
There's no canonical list of this in Unicode—you'll have to define your own list. You could start by using Python's unicodedata module to explore the Unicode database. Note that this won't find things like <> that are used as braces even though they have other official meanings, namely as less-than and greater-than signs. #!/usr/bin/env python2.7 import re import unicodedata for i in range(0x10000): char = unichr(i) category = unicodedata.category(char) name = unicodedata.name(char, '') if ('bracket' in name.lower() or 'paren' in name.lower() or category in ['Ps', 'Pe']): print 'U+%04x %s %s %c' % (i, category, name, char) Output: U+0028 Ps LEFT PARENTHESIS ( U+0029 Pe RIGHT PARENTHESIS ) U+005b Ps LEFT SQUARE BRACKET [ U+005d Pe RIGHT SQUARE BRACKET ] U+007b Ps LEFT CURLY BRACKET { U+007d Pe RIGHT CURLY BRACKET } U+0f3a Ps TIBETAN MARK GUG RTAGS GYON ༺ U+0f3b Pe TIBETAN MARK GUG RTAGS GYAS ༻ U+0f3c Ps TIBETAN MARK ANG KHANG GYON ༼ U+0f3d Pe TIBETAN MARK ANG KHANG GYAS ༽ U+169b Ps OGHAM FEATHER MARK ᚛ U+169c Pe OGHAM REVERSED FEATHER MARK ᚜ U+201a Ps SINGLE LOW-9 QUOTATION MARK ‚ U+201e Ps DOUBLE LOW-9 QUOTATION MARK „ U+2045 Ps LEFT SQUARE BRACKET WITH QUILL ⁅ U+2046 Pe RIGHT SQUARE BRACKET WITH QUILL ⁆ U+207d Ps SUPERSCRIPT LEFT PARENTHESIS ⁽ U+207e Pe SUPERSCRIPT RIGHT PARENTHESIS ⁾ U+208d Ps SUBSCRIPT LEFT PARENTHESIS ₍ U+208e Pe SUBSCRIPT RIGHT PARENTHESIS ₎ U+2329 Ps LEFT-POINTING ANGLE BRACKET 〈 U+232a Pe RIGHT-POINTING ANGLE BRACKET 〉 U+239b Sm LEFT PARENTHESIS UPPER HOOK ⎛ U+239c Sm LEFT PARENTHESIS EXTENSION ⎜ U+239d Sm LEFT PARENTHESIS LOWER HOOK ⎝ U+239e Sm RIGHT PARENTHESIS UPPER HOOK ⎞ U+239f Sm RIGHT PARENTHESIS EXTENSION ⎟ U+23a0 Sm RIGHT PARENTHESIS LOWER HOOK ⎠ U+23a1 Sm LEFT SQUARE BRACKET UPPER CORNER ⎡ U+23a2 Sm LEFT SQUARE BRACKET EXTENSION ⎢ U+23a3 Sm LEFT SQUARE BRACKET LOWER CORNER ⎣ U+23a4 Sm RIGHT SQUARE BRACKET UPPER CORNER ⎤ U+23a5 Sm RIGHT SQUARE BRACKET EXTENSION ⎥ U+23a6 Sm RIGHT SQUARE BRACKET LOWER CORNER ⎦ U+23a7 Sm LEFT CURLY BRACKET UPPER HOOK ⎧ U+23a8 Sm LEFT CURLY BRACKET MIDDLE PIECE ⎨ U+23a9 Sm LEFT CURLY BRACKET LOWER HOOK ⎩ U+23aa Sm CURLY BRACKET EXTENSION ⎪ U+23ab Sm RIGHT CURLY BRACKET UPPER HOOK ⎫ U+23ac Sm RIGHT CURLY BRACKET MIDDLE PIECE ⎬ U+23ad Sm RIGHT CURLY BRACKET LOWER HOOK ⎭ U+23b0 Sm UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION ⎰ U+23b1 Sm UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION ⎱ U+23b4 So TOP SQUARE BRACKET ⎴ U+23b5 So BOTTOM SQUARE BRACKET ⎵ U+23b6 So BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET ⎶ U+23dc Sm TOP PARENTHESIS ⏜ U+23dd Sm BOTTOM PARENTHESIS ⏝ U+23de Sm TOP CURLY BRACKET ⏞ U+23df Sm BOTTOM CURLY BRACKET ⏟ U+23e0 Sm TOP TORTOISE SHELL BRACKET ⏠ U+23e1 Sm BOTTOM TORTOISE SHELL BRACKET ⏡ U+2474 No PARENTHESIZED DIGIT ONE ⑴ U+2475 No PARENTHESIZED DIGIT TWO ⑵ U+2476 No PARENTHESIZED DIGIT THREE ⑶ U+2477 No PARENTHESIZED DIGIT FOUR ⑷ U+2478 No PARENTHESIZED DIGIT FIVE ⑸ U+2479 No PARENTHESIZED DIGIT SIX ⑹ U+247a No PARENTHESIZED DIGIT SEVEN ⑺ U+247b No PARENTHESIZED DIGIT EIGHT ⑻ U+247c No PARENTHESIZED DIGIT NINE ⑼ U+247d No PARENTHESIZED NUMBER TEN ⑽ U+247e No PARENTHESIZED NUMBER ELEVEN ⑾ U+247f No PARENTHESIZED NUMBER TWELVE ⑿ U+2480 No PARENTHESIZED NUMBER THIRTEEN ⒀ U+2481 No PARENTHESIZED NUMBER FOURTEEN ⒁ U+2482 No PARENTHESIZED NUMBER FIFTEEN ⒂ U+2483 No PARENTHESIZED NUMBER SIXTEEN ⒃ U+2484 No PARENTHESIZED NUMBER SEVENTEEN ⒄ U+2485 No PARENTHESIZED NUMBER EIGHTEEN ⒅ U+2486 No PARENTHESIZED NUMBER NINETEEN ⒆ U+2487 No PARENTHESIZED NUMBER TWENTY ⒇ U+249c So PARENTHESIZED LATIN SMALL LETTER A ⒜ U+249d So PARENTHESIZED LATIN SMALL LETTER B ⒝ U+249e So PARENTHESIZED LATIN SMALL LETTER C ⒞ U+249f So PARENTHESIZED LATIN SMALL LETTER D ⒟ U+24a0 So PARENTHESIZED LATIN SMALL LETTER E ⒠ U+24a1 So PARENTHESIZED LATIN SMALL LETTER F ⒡ U+24a2 So PARENTHESIZED LATIN SMALL LETTER G ⒢ U+24a3 So PARENTHESIZED LATIN SMALL LETTER H ⒣ U+24a4 So PARENTHESIZED LATIN SMALL LETTER I ⒤ U+24a5 So PARENTHESIZED LATIN SMALL LETTER J ⒥ U+24a6 So PARENTHESIZED LATIN SMALL LETTER K ⒦ U+24a7 So PARENTHESIZED LATIN SMALL LETTER L ⒧ U+24a8 So PARENTHESIZED LATIN SMALL LETTER M ⒨ U+24a9 So PARENTHESIZED LATIN SMALL LETTER N ⒩ U+24aa So PARENTHESIZED LATIN SMALL LETTER O ⒪ U+24ab So PARENTHESIZED LATIN SMALL LETTER P ⒫ U+24ac So PARENTHESIZED LATIN SMALL LETTER Q ⒬ U+24ad So PARENTHESIZED LATIN SMALL LETTER R ⒭ U+24ae So PARENTHESIZED LATIN SMALL LETTER S ⒮ U+24af So PARENTHESIZED LATIN SMALL LETTER T ⒯ U+24b0 So PARENTHESIZED LATIN SMALL LETTER U ⒰ U+24b1 So PARENTHESIZED LATIN SMALL LETTER V ⒱ U+24b2 So PARENTHESIZED LATIN SMALL LETTER W ⒲ U+24b3 So PARENTHESIZED LATIN SMALL LETTER X ⒳ U+24b4 So PARENTHESIZED LATIN SMALL LETTER Y ⒴ U+24b5 So PARENTHESIZED LATIN SMALL LETTER Z ⒵ U+2768 Ps MEDIUM LEFT PARENTHESIS ORNAMENT ❨ U+2769 Pe MEDIUM RIGHT PARENTHESIS ORNAMENT ❩ U+276a Ps MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT ❪ U+276b Pe MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT ❫ U+276c Ps MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT ❬ U+276d Pe MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT ❭ U+276e Ps HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT ❮ U+276f Pe HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT ❯ U+2770 Ps HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT ❰ U+2771 Pe HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT ❱ U+2772 Ps LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT ❲ U+2773 Pe LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT ❳ U+2774 Ps MEDIUM LEFT CURLY BRACKET ORNAMENT ❴ U+2775 Pe MEDIUM RIGHT CURLY BRACKET ORNAMENT ❵ U+27c5 Ps LEFT S-SHAPED BAG DELIMITER ⟅ U+27c6 Pe RIGHT S-SHAPED BAG DELIMITER ⟆ U+27e6 Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET ⟦ U+27e7 Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET ⟧ U+27e8 Ps MATHEMATICAL LEFT ANGLE BRACKET ⟨ U+27e9 Pe MATHEMATICAL RIGHT ANGLE BRACKET ⟩ U+27ea Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET ⟪ U+27eb Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET ⟫ U+27ec Ps MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET ⟬ U+27ed Pe MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET ⟭ U+27ee Ps MATHEMATICAL LEFT FLATTENED PARENTHESIS ⟮ U+27ef Pe MATHEMATICAL RIGHT FLATTENED PARENTHESIS ⟯ U+2983 Ps LEFT WHITE CURLY BRACKET ⦃ U+2984 Pe RIGHT WHITE CURLY BRACKET ⦄ U+2985 Ps LEFT WHITE PARENTHESIS ⦅ U+2986 Pe RIGHT WHITE PARENTHESIS ⦆ U+2987 Ps Z NOTATION LEFT IMAGE BRACKET ⦇ U+2988 Pe Z NOTATION RIGHT IMAGE BRACKET ⦈ U+2989 Ps Z NOTATION LEFT BINDING BRACKET ⦉ U+298a Pe Z NOTATION RIGHT BINDING BRACKET ⦊ U+298b Ps LEFT SQUARE BRACKET WITH UNDERBAR ⦋ U+298c Pe RIGHT SQUARE BRACKET WITH UNDERBAR ⦌ U+298d Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER ⦍ U+298e Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER ⦎ U+298f Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER ⦏ U+2990 Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER ⦐ U+2991 Ps LEFT ANGLE BRACKET WITH DOT ⦑ U+2992 Pe RIGHT ANGLE BRACKET WITH DOT ⦒ U+2993 Ps LEFT ARC LESS-THAN BRACKET ⦓ U+2994 Pe RIGHT ARC GREATER-THAN BRACKET ⦔ U+2995 Ps DOUBLE LEFT ARC GREATER-THAN BRACKET ⦕ U+2996 Pe DOUBLE RIGHT ARC LESS-THAN BRACKET ⦖ U+2997 Ps LEFT BLACK TORTOISE SHELL BRACKET ⦗ U+2998 Pe RIGHT BLACK TORTOISE SHELL BRACKET ⦘ U+29d8 Ps LEFT WIGGLY FENCE ⧘ U+29d9 Pe RIGHT WIGGLY FENCE ⧙ U+29da Ps LEFT DOUBLE WIGGLY FENCE ⧚ U+29db Pe RIGHT DOUBLE WIGGLY FENCE ⧛ U+29fc Ps LEFT-POINTING CURVED ANGLE BRACKET ⧼ U+29fd Pe RIGHT-POINTING CURVED ANGLE BRACKET ⧽ U+2e02 Pi LEFT SUBSTITUTION BRACKET ⸂ U+2e03 Pf RIGHT SUBSTITUTION BRACKET ⸃ U+2e04 Pi LEFT DOTTED SUBSTITUTION BRACKET ⸄ U+2e05 Pf RIGHT DOTTED SUBSTITUTION BRACKET ⸅ U+2e09 Pi LEFT TRANSPOSITION BRACKET ⸉ U+2e0a Pf RIGHT TRANSPOSITION BRACKET ⸊ U+2e0c Pi LEFT RAISED OMISSION BRACKET ⸌ U+2e0d Pf RIGHT RAISED OMISSION BRACKET ⸍ U+2e1c Pi LEFT LOW PARAPHRASE BRACKET ⸜ U+2e1d Pf RIGHT LOW PARAPHRASE BRACKET ⸝ U+2e22 Ps TOP LEFT HALF BRACKET ⸢ U+2e23 Pe TOP RIGHT HALF BRACKET ⸣ U+2e24 Ps BOTTOM LEFT HALF BRACKET ⸤ U+2e25 Pe BOTTOM RIGHT HALF BRACKET ⸥ U+2e26 Ps LEFT SIDEWAYS U BRACKET ⸦ U+2e27 Pe RIGHT SIDEWAYS U BRACKET ⸧ U+2e28 Ps LEFT DOUBLE PARENTHESIS ⸨ U+2e29 Pe RIGHT DOUBLE PARENTHESIS ⸩ U+3008 Ps LEFT ANGLE BRACKET 〈 U+3009 Pe RIGHT ANGLE BRACKET 〉 U+300a Ps LEFT DOUBLE ANGLE BRACKET 《 U+300b Pe RIGHT DOUBLE ANGLE BRACKET 》 U+300c Ps LEFT CORNER BRACKET 「 U+300d Pe RIGHT CORNER BRACKET 」 U+300e Ps LEFT WHITE CORNER BRACKET 『 U+300f Pe RIGHT WHITE CORNER BRACKET 』 U+3010 Ps LEFT BLACK LENTICULAR BRACKET 【 U+3011 Pe RIGHT BLACK LENTICULAR BRACKET 】 U+3014 Ps LEFT TORTOISE SHELL BRACKET 〔 U+3015 Pe RIGHT TORTOISE SHELL BRACKET 〕 U+3016 Ps LEFT WHITE LENTICULAR BRACKET 〖 U+3017 Pe RIGHT WHITE LENTICULAR BRACKET 〗 U+3018 Ps LEFT WHITE TORTOISE SHELL BRACKET 〘 U+3019 Pe RIGHT WHITE TORTOISE SHELL BRACKET 〙 U+301a Ps LEFT WHITE SQUARE BRACKET 〚 U+301b Pe RIGHT WHITE SQUARE BRACKET 〛 U+301d Ps REVERSED DOUBLE PRIME QUOTATION MARK 〝 U+301e Pe DOUBLE PRIME QUOTATION MARK 〞 U+301f Pe LOW DOUBLE PRIME QUOTATION MARK 〟 U+3200 So PARENTHESIZED HANGUL KIYEOK ㈀ U+3201 So PARENTHESIZED HANGUL NIEUN ㈁ U+3202 So PARENTHESIZED HANGUL TIKEUT ㈂ U+3203 So PARENTHESIZED HANGUL RIEUL ㈃ U+3204 So PARENTHESIZED HANGUL MIEUM ㈄ U+3205 So PARENTHESIZED HANGUL PIEUP ㈅ U+3206 So PARENTHESIZED HANGUL SIOS ㈆ U+3207 So PARENTHESIZED HANGUL IEUNG ㈇ U+3208 So PARENTHESIZED HANGUL CIEUC ㈈ U+3209 So PARENTHESIZED HANGUL CHIEUCH ㈉ U+320a So PARENTHESIZED HANGUL KHIEUKH ㈊ U+320b So PARENTHESIZED HANGUL THIEUTH ㈋ U+320c So PARENTHESIZED HANGUL PHIEUPH ㈌ U+320d So PARENTHESIZED HANGUL HIEUH ㈍ U+320e So PARENTHESIZED HANGUL KIYEOK A ㈎ U+320f So PARENTHESIZED HANGUL NIEUN A ㈏ U+3210 So PARENTHESIZED HANGUL TIKEUT A ㈐ U+3211 So PARENTHESIZED HANGUL RIEUL A ㈑ U+3212 So PARENTHESIZED HANGUL MIEUM A ㈒ U+3213 So PARENTHESIZED HANGUL PIEUP A ㈓ U+3214 So PARENTHESIZED HANGUL SIOS A ㈔ U+3215 So PARENTHESIZED HANGUL IEUNG A ㈕ U+3216 So PARENTHESIZED HANGUL CIEUC A ㈖ U+3217 So PARENTHESIZED HANGUL CHIEUCH A ㈗ U+3218 So PARENTHESIZED HANGUL KHIEUKH A ㈘ U+3219 So PARENTHESIZED HANGUL THIEUTH A ㈙ U+321a So PARENTHESIZED HANGUL PHIEUPH A ㈚ U+321b So PARENTHESIZED HANGUL HIEUH A ㈛ U+321c So PARENTHESIZED HANGUL CIEUC U ㈜ U+321d So PARENTHESIZED KOREAN CHARACTER OJEON ㈝ U+321e So PARENTHESIZED KOREAN CHARACTER O HU ㈞ U+3220 No PARENTHESIZED IDEOGRAPH ONE ㈠ U+3221 No PARENTHESIZED IDEOGRAPH TWO ㈡ U+3222 No PARENTHESIZED IDEOGRAPH THREE ㈢ U+3223 No PARENTHESIZED IDEOGRAPH FOUR ㈣ U+3224 No PARENTHESIZED IDEOGRAPH FIVE ㈤ U+3225 No PARENTHESIZED IDEOGRAPH SIX ㈥ U+3226 No PARENTHESIZED IDEOGRAPH SEVEN ㈦ U+3227 No PARENTHESIZED IDEOGRAPH EIGHT ㈧ U+3228 No PARENTHESIZED IDEOGRAPH NINE ㈨ U+3229 No PARENTHESIZED IDEOGRAPH TEN ㈩ U+322a So PARENTHESIZED IDEOGRAPH MOON ㈪ U+322b So PARENTHESIZED IDEOGRAPH FIRE ㈫ U+322c So PARENTHESIZED IDEOGRAPH WATER ㈬ U+322d So PARENTHESIZED IDEOGRAPH WOOD ㈭ U+322e So PARENTHESIZED IDEOGRAPH METAL ㈮ U+322f So PARENTHESIZED IDEOGRAPH EARTH ㈯ U+3230 So PARENTHESIZED IDEOGRAPH SUN ㈰ U+3231 So PARENTHESIZED IDEOGRAPH STOCK ㈱ U+3232 So PARENTHESIZED IDEOGRAPH HAVE ㈲ U+3233 So PARENTHESIZED IDEOGRAPH SOCIETY ㈳ U+3234 So PARENTHESIZED IDEOGRAPH NAME ㈴ U+3235 So PARENTHESIZED IDEOGRAPH SPECIAL ㈵ U+3236 So PARENTHESIZED IDEOGRAPH FINANCIAL ㈶ U+3237 So PARENTHESIZED IDEOGRAPH CONGRATULATION ㈷ U+3238 So PARENTHESIZED IDEOGRAPH LABOR ㈸ U+3239 So PARENTHESIZED IDEOGRAPH REPRESENT ㈹ U+323a So PARENTHESIZED IDEOGRAPH CALL ㈺ U+323b So PARENTHESIZED IDEOGRAPH STUDY ㈻ U+323c So PARENTHESIZED IDEOGRAPH SUPERVISE ㈼ U+323d So PARENTHESIZED IDEOGRAPH ENTERPRISE ㈽ U+323e So PARENTHESIZED IDEOGRAPH RESOURCE ㈾ U+323f So PARENTHESIZED IDEOGRAPH ALLIANCE ㈿ U+3240 So PARENTHESIZED IDEOGRAPH FESTIVAL ㉀ U+3241 So PARENTHESIZED IDEOGRAPH REST ㉁ U+3242 So PARENTHESIZED IDEOGRAPH SELF ㉂ U+3243 So PARENTHESIZED IDEOGRAPH REACH ㉃ U+fd3e Ps ORNATE LEFT PARENTHESIS ﴾ U+fd3f Pe ORNATE RIGHT PARENTHESIS ﴿ U+fe17 Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET ︗ U+fe18 Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET ︘ U+fe35 Ps PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS ︵ U+fe36 Pe PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS ︶ U+fe37 Ps PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET ︷ U+fe38 Pe PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET ︸ U+fe39 Ps PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET ︹ U+fe3a Pe PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET ︺ U+fe3b Ps PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET ︻ U+fe3c Pe PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET ︼ U+fe3d Ps PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET ︽ U+fe3e Pe PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET ︾ U+fe3f Ps PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET ︿ U+fe40 Pe PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET ﹀ U+fe41 Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET ﹁ U+fe42 Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET ﹂ U+fe43 Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET ﹃ U+fe44 Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET ﹄ U+fe47 Ps PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET ﹇ U+fe48 Pe PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET ﹈ U+fe59 Ps SMALL LEFT PARENTHESIS ﹙ U+fe5a Pe SMALL RIGHT PARENTHESIS ﹚ U+fe5b Ps SMALL LEFT CURLY BRACKET ﹛ U+fe5c Pe SMALL RIGHT CURLY BRACKET ﹜ U+fe5d Ps SMALL LEFT TORTOISE SHELL BRACKET ﹝ U+fe5e Pe SMALL RIGHT TORTOISE SHELL BRACKET ﹞ U+ff08 Ps FULLWIDTH LEFT PARENTHESIS ( U+ff09 Pe FULLWIDTH RIGHT PARENTHESIS ) U+ff3b Ps FULLWIDTH LEFT SQUARE BRACKET [ U+ff3d Pe FULLWIDTH RIGHT SQUARE BRACKET ] U+ff5b Ps FULLWIDTH LEFT CURLY BRACKET { U+ff5d Pe FULLWIDTH RIGHT CURLY BRACKET } U+ff5f Ps FULLWIDTH LEFT WHITE PARENTHESIS ⦅ U+ff60 Pe FULLWIDTH RIGHT WHITE PARENTHESIS ⦆ U+ff62 Ps HALFWIDTH LEFT CORNER BRACKET 「 U+ff63 Pe HALFWIDTH RIGHT CORNER BRACKET 」
Recent Unicode releases have added a property Bidi_Paired_Bracket that gives what Unicode thinks is the answer to this question. This is different from the ones that are mirrored. There are 60 bracket-pairs as of Unicode 8.0. The following table maps each to its mate. The first column gives a code point; the second gives the Unicode version it was introduced in; the third shows the mapping, and the final column gives the mapping by character name. Also, for looking at the Unicode character database, Perl5 is packaged with the module Unicode::UCD, with many functions for inspecting things, including new ones in Perl v5.22 that will output the value of all properties for a given code point. Unicode::Tussle on CPAN offers similar and other functionality 0028 1.1 '(' => ')'; LEFT PARENTHESIS => RIGHT PARENTHESIS 0029 1.1 ')' => '('; RIGHT PARENTHESIS => LEFT PARENTHESIS 005B 1.1 '[' => ']'; LEFT SQUARE BRACKET => RIGHT SQUARE BRACKET 005D 1.1 ']' => '['; RIGHT SQUARE BRACKET => LEFT SQUARE BRACKET 007B 1.1 '{' => '}'; LEFT CURLY BRACKET => RIGHT CURLY BRACKET 007D 1.1 '}' => '{'; RIGHT CURLY BRACKET => LEFT CURLY BRACKET 0F3A 2.0 '༺' => '༻'; TIBETAN MARK GUG RTAGS GYON => TIBETAN MARK GUG RTAGS GYAS 0F3B 2.0 '༻' => '༺'; TIBETAN MARK GUG RTAGS GYAS => TIBETAN MARK GUG RTAGS GYON 0F3C 2.0 '༼' => '༽'; TIBETAN MARK ANG KHANG GYON => TIBETAN MARK ANG KHANG GYAS 0F3D 2.0 '༽' => '༼'; TIBETAN MARK ANG KHANG GYAS => TIBETAN MARK ANG KHANG GYON 169B 3.0 '᚛' => '᚜'; OGHAM FEATHER MARK => OGHAM REVERSED FEATHER MARK 169C 3.0 '᚜' => '᚛'; OGHAM REVERSED FEATHER MARK => OGHAM FEATHER MARK 2045 1.1 '⁅' => '⁆'; LEFT SQUARE BRACKET WITH QUILL => RIGHT SQUARE BRACKET WITH QUILL 2046 1.1 '⁆' => '⁅'; RIGHT SQUARE BRACKET WITH QUILL => LEFT SQUARE BRACKET WITH QUILL 207D 1.1 '⁽' => '⁾'; SUPERSCRIPT LEFT PARENTHESIS => SUPERSCRIPT RIGHT PARENTHESIS 207E 1.1 '⁾' => '⁽'; SUPERSCRIPT RIGHT PARENTHESIS => SUPERSCRIPT LEFT PARENTHESIS 208D 1.1 '₍' => '₎'; SUBSCRIPT LEFT PARENTHESIS => SUBSCRIPT RIGHT PARENTHESIS 208E 1.1 '₎' => '₍'; SUBSCRIPT RIGHT PARENTHESIS => SUBSCRIPT LEFT PARENTHESIS 2308 1.1 '⌈' => '⌉'; LEFT CEILING => RIGHT CEILING 2309 1.1 '⌉' => '⌈'; RIGHT CEILING => LEFT CEILING 230A 1.1 '⌊' => '⌋'; LEFT FLOOR => RIGHT FLOOR 230B 1.1 '⌋' => '⌊'; RIGHT FLOOR => LEFT FLOOR 2329 1.1 '〈' => '〉'; LEFT-POINTING ANGLE BRACKET => RIGHT-POINTING ANGLE BRACKET 232A 1.1 '〉' => '〈'; RIGHT-POINTING ANGLE BRACKET => LEFT-POINTING ANGLE BRACKET 2768 3.2 '❨' => '❩'; MEDIUM LEFT PARENTHESIS ORNAMENT => MEDIUM RIGHT PARENTHESIS ORNAMENT 2769 3.2 '❩' => '❨'; MEDIUM RIGHT PARENTHESIS ORNAMENT => MEDIUM LEFT PARENTHESIS ORNAMENT 276A 3.2 '❪' => '❫'; MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT => MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT 276B 3.2 '❫' => '❪'; MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT => MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT 276C 3.2 '❬' => '❭'; MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT => MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT 276D 3.2 '❭' => '❬'; MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT => MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT 276E 3.2 '❮' => '❯'; HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT => HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT 276F 3.2 '❯' => '❮'; HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT => HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT 2770 3.2 '❰' => '❱'; HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT => HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT 2771 3.2 '❱' => '❰'; HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT => HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT 2772 3.2 '❲' => '❳'; LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT => LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT 2773 3.2 '❳' => '❲'; LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT => LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT 2774 3.2 '❴' => '❵'; MEDIUM LEFT CURLY BRACKET ORNAMENT => MEDIUM RIGHT CURLY BRACKET ORNAMENT 2775 3.2 '❵' => '❴'; MEDIUM RIGHT CURLY BRACKET ORNAMENT => MEDIUM LEFT CURLY BRACKET ORNAMENT 27C5 4.1 '⟅' => '⟆'; LEFT S-SHAPED BAG DELIMITER => RIGHT S-SHAPED BAG DELIMITER 27C6 4.1 '⟆' => '⟅'; RIGHT S-SHAPED BAG DELIMITER => LEFT S-SHAPED BAG DELIMITER 27E6 3.2 '⟦' => '⟧'; MATHEMATICAL LEFT WHITE SQUARE BRACKET => MATHEMATICAL RIGHT WHITE SQUARE BRACKET 27E7 3.2 '⟧' => '⟦'; MATHEMATICAL RIGHT WHITE SQUARE BRACKET => MATHEMATICAL LEFT WHITE SQUARE BRACKET 27E8 3.2 '⟨' => '⟩'; MATHEMATICAL LEFT ANGLE BRACKET => MATHEMATICAL RIGHT ANGLE BRACKET 27E9 3.2 '⟩' => '⟨'; MATHEMATICAL RIGHT ANGLE BRACKET => MATHEMATICAL LEFT ANGLE BRACKET 27EA 3.2 '⟪' => '⟫'; MATHEMATICAL LEFT DOUBLE ANGLE BRACKET => MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET 27EB 3.2 '⟫' => '⟪'; MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET => MATHEMATICAL LEFT DOUBLE ANGLE BRACKET 27EC 5.1 '⟬' => '⟭'; MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET => MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET 27ED 5.1 '⟭' => '⟬'; MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET => MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET 27EE 5.1 '⟮' => '⟯'; MATHEMATICAL LEFT FLATTENED PARENTHESIS => MATHEMATICAL RIGHT FLATTENED PARENTHESIS 27EF 5.1 '⟯' => '⟮'; MATHEMATICAL RIGHT FLATTENED PARENTHESIS => MATHEMATICAL LEFT FLATTENED PARENTHESIS 2983 3.2 '⦃' => '⦄'; LEFT WHITE CURLY BRACKET => RIGHT WHITE CURLY BRACKET 2984 3.2 '⦄' => '⦃'; RIGHT WHITE CURLY BRACKET => LEFT WHITE CURLY BRACKET 2985 3.2 '⦅' => '⦆'; LEFT WHITE PARENTHESIS => RIGHT WHITE PARENTHESIS 2986 3.2 '⦆' => '⦅'; RIGHT WHITE PARENTHESIS => LEFT WHITE PARENTHESIS 2987 3.2 '⦇' => '⦈'; Z NOTATION LEFT IMAGE BRACKET => Z NOTATION RIGHT IMAGE BRACKET 2988 3.2 '⦈' => '⦇'; Z NOTATION RIGHT IMAGE BRACKET => Z NOTATION LEFT IMAGE BRACKET 2989 3.2 '⦉' => '⦊'; Z NOTATION LEFT BINDING BRACKET => Z NOTATION RIGHT BINDING BRACKET 298A 3.2 '⦊' => '⦉'; Z NOTATION RIGHT BINDING BRACKET => Z NOTATION LEFT BINDING BRACKET 298B 3.2 '⦋' => '⦌'; LEFT SQUARE BRACKET WITH UNDERBAR => RIGHT SQUARE BRACKET WITH UNDERBAR 298C 3.2 '⦌' => '⦋'; RIGHT SQUARE BRACKET WITH UNDERBAR => LEFT SQUARE BRACKET WITH UNDERBAR 298D 3.2 '⦍' => '⦐'; LEFT SQUARE BRACKET WITH TICK IN TOP CORNER => RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER 298E 3.2 '⦎' => '⦏'; RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER => LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER 298F 3.2 '⦏' => '⦎'; LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER => RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER 2990 3.2 '⦐' => '⦍'; RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER => LEFT SQUARE BRACKET WITH TICK IN TOP CORNER 2991 3.2 '⦑' => '⦒'; LEFT ANGLE BRACKET WITH DOT => RIGHT ANGLE BRACKET WITH DOT 2992 3.2 '⦒' => '⦑'; RIGHT ANGLE BRACKET WITH DOT => LEFT ANGLE BRACKET WITH DOT 2993 3.2 '⦓' => '⦔'; LEFT ARC LESS-THAN BRACKET => RIGHT ARC GREATER-THAN BRACKET 2994 3.2 '⦔' => '⦓'; RIGHT ARC GREATER-THAN BRACKET => LEFT ARC LESS-THAN BRACKET 2995 3.2 '⦕' => '⦖'; DOUBLE LEFT ARC GREATER-THAN BRACKET => DOUBLE RIGHT ARC LESS-THAN BRACKET 2996 3.2 '⦖' => '⦕'; DOUBLE RIGHT ARC LESS-THAN BRACKET => DOUBLE LEFT ARC GREATER-THAN BRACKET 2997 3.2 '⦗' => '⦘'; LEFT BLACK TORTOISE SHELL BRACKET => RIGHT BLACK TORTOISE SHELL BRACKET 2998 3.2 '⦘' => '⦗'; RIGHT BLACK TORTOISE SHELL BRACKET => LEFT BLACK TORTOISE SHELL BRACKET 29D8 3.2 '⧘' => '⧙'; LEFT WIGGLY FENCE => RIGHT WIGGLY FENCE 29D9 3.2 '⧙' => '⧘'; RIGHT WIGGLY FENCE => LEFT WIGGLY FENCE 29DA 3.2 '⧚' => '⧛'; LEFT DOUBLE WIGGLY FENCE => RIGHT DOUBLE WIGGLY FENCE 29DB 3.2 '⧛' => '⧚'; RIGHT DOUBLE WIGGLY FENCE => LEFT DOUBLE WIGGLY FENCE 29FC 3.2 '⧼' => '⧽'; LEFT-POINTING CURVED ANGLE BRACKET => RIGHT-POINTING CURVED ANGLE BRACKET 29FD 3.2 '⧽' => '⧼'; RIGHT-POINTING CURVED ANGLE BRACKET => LEFT-POINTING CURVED ANGLE BRACKET 2E22 5.1 '⸢' => '⸣'; TOP LEFT HALF BRACKET => TOP RIGHT HALF BRACKET 2E23 5.1 '⸣' => '⸢'; TOP RIGHT HALF BRACKET => TOP LEFT HALF BRACKET 2E24 5.1 '⸤' => '⸥'; BOTTOM LEFT HALF BRACKET => BOTTOM RIGHT HALF BRACKET 2E25 5.1 '⸥' => '⸤'; BOTTOM RIGHT HALF BRACKET => BOTTOM LEFT HALF BRACKET 2E26 5.1 '⸦' => '⸧'; LEFT SIDEWAYS U BRACKET => RIGHT SIDEWAYS U BRACKET 2E27 5.1 '⸧' => '⸦'; RIGHT SIDEWAYS U BRACKET => LEFT SIDEWAYS U BRACKET 2E28 5.1 '⸨' => '⸩'; LEFT DOUBLE PARENTHESIS => RIGHT DOUBLE PARENTHESIS 2E29 5.1 '⸩' => '⸨'; RIGHT DOUBLE PARENTHESIS => LEFT DOUBLE PARENTHESIS 3008 1.1 '〈' => '〉'; LEFT ANGLE BRACKET => RIGHT ANGLE BRACKET 3009 1.1 '〉' => '〈'; RIGHT ANGLE BRACKET => LEFT ANGLE BRACKET 300A 1.1 '《' => '》'; LEFT DOUBLE ANGLE BRACKET => RIGHT DOUBLE ANGLE BRACKET 300B 1.1 '》' => '《'; RIGHT DOUBLE ANGLE BRACKET => LEFT DOUBLE ANGLE BRACKET 300C 1.1 '「' => '」'; LEFT CORNER BRACKET => RIGHT CORNER BRACKET 300D 1.1 '」' => '「'; RIGHT CORNER BRACKET => LEFT CORNER BRACKET 300E 1.1 '『' => '』'; LEFT WHITE CORNER BRACKET => RIGHT WHITE CORNER BRACKET 300F 1.1 '』' => '『'; RIGHT WHITE CORNER BRACKET => LEFT WHITE CORNER BRACKET 3010 1.1 '【' => '】'; LEFT BLACK LENTICULAR BRACKET => RIGHT BLACK LENTICULAR BRACKET 3011 1.1 '】' => '【'; RIGHT BLACK LENTICULAR BRACKET => LEFT BLACK LENTICULAR BRACKET 3014 1.1 '〔' => '〕'; LEFT TORTOISE SHELL BRACKET => RIGHT TORTOISE SHELL BRACKET 3015 1.1 '〕' => '〔'; RIGHT TORTOISE SHELL BRACKET => LEFT TORTOISE SHELL BRACKET 3016 1.1 '〖' => '〗'; LEFT WHITE LENTICULAR BRACKET => RIGHT WHITE LENTICULAR BRACKET 3017 1.1 '〗' => '〖'; RIGHT WHITE LENTICULAR BRACKET => LEFT WHITE LENTICULAR BRACKET 3018 1.1 '〘' => '〙'; LEFT WHITE TORTOISE SHELL BRACKET => RIGHT WHITE TORTOISE SHELL BRACKET 3019 1.1 '〙' => '〘'; RIGHT WHITE TORTOISE SHELL BRACKET => LEFT WHITE TORTOISE SHELL BRACKET 301A 1.1 '〚' => '〛'; LEFT WHITE SQUARE BRACKET => RIGHT WHITE SQUARE BRACKET 301B 1.1 '〛' => '〚'; RIGHT WHITE SQUARE BRACKET => LEFT WHITE SQUARE BRACKET FE59 1.1 '﹙' => '﹚'; SMALL LEFT PARENTHESIS => SMALL RIGHT PARENTHESIS FE5A 1.1 '﹚' => '﹙'; SMALL RIGHT PARENTHESIS => SMALL LEFT PARENTHESIS FE5B 1.1 '﹛' => '﹜'; SMALL LEFT CURLY BRACKET => SMALL RIGHT CURLY BRACKET FE5C 1.1 '﹜' => '﹛'; SMALL RIGHT CURLY BRACKET => SMALL LEFT CURLY BRACKET FE5D 1.1 '﹝' => '﹞'; SMALL LEFT TORTOISE SHELL BRACKET => SMALL RIGHT TORTOISE SHELL BRACKET FE5E 1.1 '﹞' => '﹝'; SMALL RIGHT TORTOISE SHELL BRACKET => SMALL LEFT TORTOISE SHELL BRACKET FF08 1.1 '(' => ')'; FULLWIDTH LEFT PARENTHESIS => FULLWIDTH RIGHT PARENTHESIS FF09 1.1 ')' => '('; FULLWIDTH RIGHT PARENTHESIS => FULLWIDTH LEFT PARENTHESIS FF3B 1.1 '[' => ']'; FULLWIDTH LEFT SQUARE BRACKET => FULLWIDTH RIGHT SQUARE BRACKET FF3D 1.1 ']' => '['; FULLWIDTH RIGHT SQUARE BRACKET => FULLWIDTH LEFT SQUARE BRACKET FF5B 1.1 '{' => '}'; FULLWIDTH LEFT CURLY BRACKET => FULLWIDTH RIGHT CURLY BRACKET FF5D 1.1 '}' => '{'; FULLWIDTH RIGHT CURLY BRACKET => FULLWIDTH LEFT CURLY BRACKET FF5F 3.2 '⦅' => '⦆'; FULLWIDTH LEFT WHITE PARENTHESIS => FULLWIDTH RIGHT WHITE PARENTHESIS FF60 3.2 '⦆' => '⦅'; FULLWIDTH RIGHT WHITE PARENTHESIS => FULLWIDTH LEFT WHITE PARENTHESIS FF62 1.1 '「' => '」'; HALFWIDTH LEFT CORNER BRACKET => HALFWIDTH RIGHT CORNER BRACKET FF63 1.1 '」' => '「'; HALFWIDTH RIGHT CORNER BRACKET => HALFWIDTH LEFT CORNER BRACKET
If you want to pick up characters like < and > that are not formally considered grouping symbols you could take a look at http://www.unicode.org/Public/UNIDATA/BidiMirroring.txt as suggested by #roeland here. That file lists all pairs of characters which should be mirror images of each other. Here's the full list: ( ) # { LEFT, RIGHT } PARENTHESIS < > # { LESS-THAN, GREATER-THAN } SIGN [ ] # { LEFT, RIGHT } SQUARE BRACKET { } # { LEFT, RIGHT } CURLY BRACKET « » # { LEFT-POINTING, RIGHT-POINTING } DOUBLE ANGLE QUOTATION MARK ༺ ༻ # TIBETAN MARK GUG RTAGS { GYON, GYAS } ༼ ༽ # TIBETAN MARK ANG KHANG { GYON, GYAS } ᚛ ᚜ # OGHAM { , REVERSED } FEATHER MARK ‹ › # SINGLE { LEFT-POINTING, RIGHT-POINTING } ANGLE QUOTATION MARK ⁅ ⁆ # { LEFT, RIGHT } SQUARE BRACKET WITH QUILL ⁽ ⁾ # SUPERSCRIPT { LEFT, RIGHT } PARENTHESIS ₍ ₎ # SUBSCRIPT { LEFT, RIGHT } PARENTHESIS ∈ ∋ # { ELEMENT OF, CONTAINS AS MEMBER } ∉ ∌ # { NOT AN ELEMENT OF, DOES NOT CONTAIN AS MEMBER } ∊ ∍ # SMALL { ELEMENT OF, CONTAINS AS MEMBER } ∼ ∽ # { TILDE OPERATOR, REVERSED TILDE } ≒ ≓ # { APPROXIMATELY EQUAL TO OR THE IMAGE OF, IMAGE OF OR APPROXIMATELY EQUAL TO } ≔ ≕ # { COLON EQUALS, EQUALS COLON } ≤ ≥ # { LESS-THAN, GREATER-THAN } OR EQUAL TO ≦ ≧ # { LESS-THAN, GREATER-THAN } OVER EQUAL TO ≪ ≫ # MUCH { LESS-THAN, GREATER-THAN } ≶ ≷ # { LESS-THAN OR GREATER-THAN, GREATER-THAN OR LESS-THAN } ≺ ≻ # { PRECEDES, SUCCEEDS } ≼ ≽ # { PRECEDES, SUCCEEDS } OR EQUAL TO ⊂ ⊃ # { SUBSET, SUPERSET } OF ⊆ ⊇ # { SUBSET, SUPERSET } OF OR EQUAL TO ⊏ ⊐ # SQUARE { IMAGE, ORIGINAL } OF ⊑ ⊒ # SQUARE { IMAGE, ORIGINAL } OF OR EQUAL TO ⊢ ⊣ # { RIGHT, LEFT } TACK ⊰ ⊱ # { PRECEDES, SUCCEEDS } UNDER RELATION ⊲ ⊳ # { NORMAL SUBGROUP OF, CONTAINS AS NORMAL SUBGROUP } ⊴ ⊵ # { NORMAL SUBGROUP OF, CONTAINS AS NORMAL SUBGROUP } OR EQUAL TO ⊶ ⊷ # { ORIGINAL, IMAGE } OF ⋉ ⋊ # { LEFT, RIGHT } NORMAL FACTOR SEMIDIRECT PRODUCT ⋋ ⋌ # { LEFT, RIGHT } SEMIDIRECT PRODUCT ≃ ⋍ # { ASYMPTOTICALLY EQUAL TO, REVERSED TILDE EQUALS } ⋐ ⋑ # DOUBLE { SUBSET, SUPERSET } ⋖ ⋗ # { LESS-THAN, GREATER-THAN } WITH DOT ⋘ ⋙ # VERY MUCH { LESS-THAN, GREATER-THAN } ⋚ ⋛ # { LESS-THAN EQUAL TO OR GREATER-THAN, GREATER-THAN EQUAL TO OR LESS-THAN } ⋜ ⋝ # EQUAL TO OR { LESS-THAN, GREATER-THAN } ⋞ ⋟ # EQUAL TO OR { PRECEDES, SUCCEEDS } ⋰ ⋱ # { UP, DOWN } RIGHT DIAGONAL ELLIPSIS ⋲ ⋺ # { ELEMENT OF, CONTAINS } WITH LONG HORIZONTAL STROKE ⋳ ⋻ # { ELEMENT OF, CONTAINS } WITH VERTICAL BAR AT END OF HORIZONTAL STROKE ⋴ ⋼ # SMALL { ELEMENT OF, CONTAINS } WITH VERTICAL BAR AT END OF HORIZONTAL STROKE ⋶ ⋽ # { ELEMENT OF, CONTAINS } WITH OVERBAR ⋷ ⋾ # SMALL { ELEMENT OF, CONTAINS } WITH OVERBAR ⌈ ⌉ # { LEFT, RIGHT } CEILING ⌊ ⌋ # { LEFT, RIGHT } FLOOR 〈 〉 # { LEFT-POINTING, RIGHT-POINTING } ANGLE BRACKET ❨ ❩ # MEDIUM { LEFT, RIGHT } PARENTHESIS ORNAMENT ❪ ❫ # MEDIUM FLATTENED { LEFT, RIGHT } PARENTHESIS ORNAMENT ❬ ❭ # MEDIUM { LEFT-POINTING, RIGHT-POINTING } ANGLE BRACKET ORNAMENT ❮ ❯ # HEAVY { LEFT-POINTING, RIGHT-POINTING } ANGLE QUOTATION MARK ORNAMENT ❰ ❱ # HEAVY { LEFT-POINTING, RIGHT-POINTING } ANGLE BRACKET ORNAMENT ❲ ❳ # LIGHT { LEFT, RIGHT } TORTOISE SHELL BRACKET ORNAMENT ❴ ❵ # MEDIUM { LEFT, RIGHT } CURLY BRACKET ORNAMENT ⟃ ⟄ # OPEN { SUBSET, SUPERSET } ⟅ ⟆ # { LEFT, RIGHT } S-SHAPED BAG DELIMITER ⟈ ⟉ # { REVERSE SOLIDUS PRECEDING SUBSET, SUPERSET PRECEDING SOLIDUS } ⟋ ⟍ # MATHEMATICAL { RISING, FALLING } DIAGONAL ⟕ ⟖ # { LEFT, RIGHT } OUTER JOIN ⟝ ⟞ # LONG { RIGHT, LEFT } TACK ⟢ ⟣ # WHITE CONCAVE-SIDED DIAMOND WITH { LEFTWARDS, RIGHTWARDS } TICK ⟤ ⟥ # WHITE SQUARE WITH { LEFTWARDS, RIGHTWARDS } TICK ⟦ ⟧ # MATHEMATICAL { LEFT, RIGHT } WHITE SQUARE BRACKET ⟨ ⟩ # MATHEMATICAL { LEFT, RIGHT } ANGLE BRACKET ⟪ ⟫ # MATHEMATICAL { LEFT, RIGHT } DOUBLE ANGLE BRACKET ⟬ ⟭ # MATHEMATICAL { LEFT, RIGHT } WHITE TORTOISE SHELL BRACKET ⟮ ⟯ # MATHEMATICAL { LEFT, RIGHT } FLATTENED PARENTHESIS ⦃ ⦄ # { LEFT, RIGHT } WHITE CURLY BRACKET ⦅ ⦆ # { LEFT, RIGHT } WHITE PARENTHESIS ⦇ ⦈ # Z NOTATION { LEFT, RIGHT } IMAGE BRACKET ⦉ ⦊ # Z NOTATION { LEFT, RIGHT } BINDING BRACKET ⦋ ⦌ # { LEFT, RIGHT } SQUARE BRACKET WITH UNDERBAR ⦎ ⦏ # { RIGHT, LEFT } SQUARE BRACKET WITH TICK IN BOTTOM CORNER ⦍ ⦐ # { LEFT, RIGHT } SQUARE BRACKET WITH TICK IN TOP CORNER ⦑ ⦒ # { LEFT, RIGHT } ANGLE BRACKET WITH DOT ⦓ ⦔ # { LEFT ARC LESS-THAN, RIGHT ARC GREATER-THAN } BRACKET ⦕ ⦖ # DOUBLE { LEFT ARC GREATER-THAN, RIGHT ARC LESS-THAN } BRACKET ⦗ ⦘ # { LEFT, RIGHT } BLACK TORTOISE SHELL BRACKET ⊘ ⦸ # CIRCLED { DIVISION SLASH, REVERSE SOLIDUS } ⧀ ⧁ # CIRCLED { LESS-THAN, GREATER-THAN } ⧄ ⧅ # SQUARED { RISING, FALLING } DIAGONAL SLASH ⧏ ⧐ # { LEFT TRIANGLE BESIDE VERTICAL BAR, VERTICAL BAR BESIDE RIGHT TRIANGLE } ⧑ ⧒ # BOWTIE WITH { LEFT, RIGHT } HALF BLACK ⧔ ⧕ # TIMES WITH { LEFT, RIGHT } HALF BLACK ⧘ ⧙ # { LEFT, RIGHT } WIGGLY FENCE ⧚ ⧛ # { LEFT, RIGHT } DOUBLE WIGGLY FENCE ∕ ⧵ # { DIVISION SLASH, REVERSE SOLIDUS OPERATOR } ⧸ ⧹ # BIG { , REVERSE } SOLIDUS ⧼ ⧽ # { LEFT-POINTING, RIGHT-POINTING } CURVED ANGLE BRACKET ⨫ ⨬ # MINUS SIGN WITH { FALLING, RISING } DOTS ⨭ ⨮ # PLUS SIGN IN { LEFT, RIGHT } HALF CIRCLE ⨴ ⨵ # MULTIPLICATION SIGN IN { LEFT, RIGHT } HALF CIRCLE ⨼ ⨽ # { , RIGHTHAND } INTERIOR PRODUCT ⩤ ⩥ # Z NOTATION { DOMAIN, RANGE } ANTIRESTRICTION ⩹ ⩺ # { LESS-THAN, GREATER-THAN } WITH CIRCLE INSIDE ⩽ ⩾ # { LESS-THAN, GREATER-THAN } OR SLANTED EQUAL TO ⩿ ⪀ # { LESS-THAN, GREATER-THAN } OR SLANTED EQUAL TO WITH DOT INSIDE ⪁ ⪂ # { LESS-THAN, GREATER-THAN } OR SLANTED EQUAL TO WITH DOT ABOVE ⪃ ⪄ # { LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT, GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT } ⪋ ⪌ # { LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN, GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN } ⪑ ⪒ # { LESS-THAN ABOVE GREATER-THAN, GREATER-THAN ABOVE LESS-THAN } ABOVE DOUBLE-LINE EQUAL ⪓ ⪔ # { LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN, GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN } ABOVE SLANTED EQUAL ⪕ ⪖ # SLANTED EQUAL TO OR { LESS-THAN, GREATER-THAN } ⪗ ⪘ # SLANTED EQUAL TO OR { LESS-THAN, GREATER-THAN } WITH DOT INSIDE ⪙ ⪚ # DOUBLE-LINE EQUAL TO OR { LESS-THAN, GREATER-THAN } ⪛ ⪜ # DOUBLE-LINE SLANTED EQUAL TO OR { LESS-THAN, GREATER-THAN } ⪡ ⪢ # DOUBLE NESTED { LESS-THAN, GREATER-THAN } ⪦ ⪧ # { LESS-THAN, GREATER-THAN } CLOSED BY CURVE ⪨ ⪩ # { LESS-THAN, GREATER-THAN } CLOSED BY CURVE ABOVE SLANTED EQUAL ⪪ ⪫ # { SMALLER, LARGER } THAN ⪬ ⪭ # { SMALLER, LARGER } THAN OR EQUAL TO ⪯ ⪰ # { PRECEDES, SUCCEEDS } ABOVE SINGLE-LINE EQUALS SIGN ⪳ ⪴ # { PRECEDES, SUCCEEDS } ABOVE EQUALS SIGN ⪻ ⪼ # DOUBLE { PRECEDES, SUCCEEDS } ⪽ ⪾ # { SUBSET, SUPERSET } WITH DOT ⪿ ⫀ # { SUBSET, SUPERSET } WITH PLUS SIGN BELOW ⫁ ⫂ # { SUBSET, SUPERSET } WITH MULTIPLICATION SIGN BELOW ⫃ ⫄ # { SUBSET, SUPERSET } OF OR EQUAL TO WITH DOT ABOVE ⫅ ⫆ # { SUBSET, SUPERSET } OF ABOVE EQUALS SIGN ⫍ ⫎ # SQUARE { LEFT, RIGHT } OPEN BOX OPERATOR ⫏ ⫐ # CLOSED { SUBSET, SUPERSET } ⫑ ⫒ # CLOSED { SUBSET, SUPERSET } OR EQUAL TO ⫓ ⫔ # { SUBSET ABOVE SUPERSET, SUPERSET ABOVE SUBSET } ⫕ ⫖ # { SUBSET ABOVE SUBSET, SUPERSET ABOVE SUPERSET } ⊦ ⫞ # { ASSERTION, SHORT LEFT TACK } ⊩ ⫣ # { FORCES, DOUBLE VERTICAL BAR LEFT TURNSTILE } ⊨ ⫤ # { TRUE, VERTICAL BAR DOUBLE LEFT TURNSTILE } ⊫ ⫥ # DOUBLE VERTICAL BAR DOUBLE { RIGHT, LEFT } TURNSTILE ⫬ ⫭ # { , REVERSED } DOUBLE STROKE NOT SIGN ⫷ ⫸ # TRIPLE NESTED { LESS-THAN, GREATER-THAN } ⫹ ⫺ # DOUBLE-LINE SLANTED { LESS-THAN, GREATER-THAN } OR EQUAL TO ⸂ ⸃ # { LEFT, RIGHT } SUBSTITUTION BRACKET ⸄ ⸅ # { LEFT, RIGHT } DOTTED SUBSTITUTION BRACKET ⸉ ⸊ # { LEFT, RIGHT } TRANSPOSITION BRACKET ⸌ ⸍ # { LEFT, RIGHT } RAISED OMISSION BRACKET ⸜ ⸝ # { LEFT, RIGHT } LOW PARAPHRASE BRACKET ⸠ ⸡ # { LEFT, RIGHT } VERTICAL BAR WITH QUILL ⸢ ⸣ # TOP { LEFT, RIGHT } HALF BRACKET ⸤ ⸥ # BOTTOM { LEFT, RIGHT } HALF BRACKET ⸦ ⸧ # { LEFT, RIGHT } SIDEWAYS U BRACKET ⸨ ⸩ # { LEFT, RIGHT } DOUBLE PARENTHESIS 〈 〉 # { LEFT, RIGHT } ANGLE BRACKET 《 》 # { LEFT, RIGHT } DOUBLE ANGLE BRACKET 【 】 # { LEFT, RIGHT } BLACK LENTICULAR BRACKET 〔 〕 # { LEFT, RIGHT } TORTOISE SHELL BRACKET 〖 〗 # { LEFT, RIGHT } WHITE LENTICULAR BRACKET 〘 〙 # { LEFT, RIGHT } WHITE TORTOISE SHELL BRACKET 〚 〛 # { LEFT, RIGHT } WHITE SQUARE BRACKET ﹙ ﹚ # SMALL { LEFT, RIGHT } PARENTHESIS ﹛ ﹜ # SMALL { LEFT, RIGHT } CURLY BRACKET ﹝ ﹞ # SMALL { LEFT, RIGHT } TORTOISE SHELL BRACKET ﹤ ﹥ # SMALL { LESS-THAN, GREATER-THAN } SIGN ( ) # FULLWIDTH { LEFT, RIGHT } PARENTHESIS < > # FULLWIDTH { LESS-THAN, GREATER-THAN } SIGN [ ] # FULLWIDTH { LEFT, RIGHT } SQUARE BRACKET { } # FULLWIDTH { LEFT, RIGHT } CURLY BRACKET ⦅ ⦆ # FULLWIDTH { LEFT, RIGHT } WHITE PARENTHESIS
What is a good way to search for unicode characters? This - obviously - depends on what exactly you plan to do. I build the website http://write-math.com. During my bachelors thesis, I created a symbol classifier (which is now on this website under "classify") which gives users the possibility to draw a symbol and get the LaTeX / unicode result (currently only 369 symbols are supported). This is very nice if you want to typeset a document and search single, specific characters of which you know how they look like / how they are called but not how to write them with LaTeX (or whatever you use for typesetting): It also has a symbol search feature. It's still in heavy development, but there are 1166 symbols in this database. For your brackets: http://www.martin-thoma.de/write-math/search/?search=bracket http://www.martin-thoma.de/write-math/search/?search=parenthesis unicode.xml (from http://www.w3.org/2003/entities/2007doc/#source) is also worth a try.
The idea of “bracket-like” characters might be more or less be identified with the General Category (gc) property values of Ps (Punctuation, open) and Pe (Punctuation, close). This category contains a few dozens of paired punctuation marks, mostly excluding quotation marks (categories Pi and Pf). In programming, many languages have tools for testing for the General Category of a character, e.g. \p{Ps} in Perl. If you just need some lists, you could use the Unicode Character Categories information at fileformat.info. Generally, the way to search for Unicode characters depends on what you are looking for and on your criteria. General Category is a good starting point in many cases.
http://xahlee.info/comp/unicode_matching_brackets.html This is an excellent and very comprehensive website (for brackets and everything else too), and it looks like they display them all using Arial, sans-serif, so if you can see the character, then it should work with good browser support.
Because andrewdotn's answer uses Python 2, here's the Python 3 version: import re import unicodedata for i in range(0x10000): char = chr(i) category = unicodedata.category(char) name = unicodedata.name(char, '') if ('bracket' in name.lower() or 'paren' in name.lower() or category in ['Ps', 'Pe']): print('U+%04x %s %s %c' % (i, category, name, char))
How to match text in [...] with NSRegularExpression
what would be the NSRegularExpression to match the text between the "[" and the "]" in the following example: "[this is some] text i would [like] to [parse] with NSRegularExpression" Thx in advance :)
Not sure about NSRegularExpression, but I suspect it's like other regular expressions in terms of greediness. So, if there could be multiple [words] or [phrases in brackets] that you want to capture in the same string, you'll have to make sure the regex isn't greedy. Maybe something like (broken up across a few lines for clarity:) \[ // find an opening square bracket ([^]]+) // find one or more characters that ARE NOT a square bracket \] // find the corresponding closing square bracket
Like a Daniel answer right pattern is \\[(.*?)\\] Let me explain why. \\[ is mean "open-bracket" symbol. Double slash allow to use special symbol [ All in ( ) allow to union as atomic sequence . — any symbol without special * ? + [ ( ) { } ^ $ | \ . /! *? — symbol entry 0 or more times. Match as few times as possible. \\] — close-bracket
Your pattern should be \[(.*?)\]