Hello, @coises and All,
Sorry, @coises, but I came acroos some differences of counting, in regex mode, between your two plugins Columns++ and Search++
For my tests, I used my Total_Chars.txt file that you can download from this location :
https://drive.google.com/file/d/1DTDQdUMgC-c2Fkc-LvlQghvtwMYyoWi3/view?usp=sharing
All countings are run in regex mode with the Match case option enabled
Some time ago, I made a list of all Unicode blocks of the last version 17.0. Presently, while testing the MultiReplace plugin of @thomas-knoefel, I updated this list and took the opportunity to include the count results obtained with Search++ alongside those already provided by Columns++
And I was very surprised because there are a lot of differences in the results between your two plugins Columns++ and Search++ !?
Here is a non-exhaustive list of the différenes observed :
•-------------------------------•----------------------------------------------------•----------•----------• •------------•-----------•-----------•
| Block range | Block name | Total | Assigned | | N++ / MRep | Columns++ | Search++ |
| | | Code-Pts | Code-Pts | | Word Chrs | Word Chrs | Word Chrs |
•-------------------------------•----------------------------------------------------•----------•----------• •------------•-----------•-----------•
| (?=\w)[\x{0400}-\x{04FF}] | Cyrillic | 256 | 256 | | 248 ! 248 | 255 |
| (?=\w)[\x{0590}-\x{05FF}] | Hebrew | 112 | 88 | | 30 ! 31 | 82 |
| (?=\w)[\x{0600}-\x{06FF}] | Arabic | 256 | 256 | | 172 ! 173 | 225 |
| (?=\w)[\x{0700}-\x{074F}] | Syriac | 80 | 77 | | 34 ! 34 | 62 |
| (?=\w)[\x{0780}-\x{07BF}] | Thaana | 64 | 50 | | 39 ! 39 | 50 |
| (?=\w)[\x{07C0}-\x{07FF}] | NKo | 64 | 62 | | 46 ! 46 | 56 |
| (?=\w)[\x{0800}-\x{083F}] | Samaritan | 64 | 61 | | 0 ! 25 | 46 |
| (?=\w)[\x{0840}-\x{085F}] | Mandaic | 32 | 29 | | 0 ! 25 | 28 |
| (?=\w)[\x{0870}-\x{089F}] | Arabic Extended-B | 48 | 43 | | 0 ! 31 | 40 |
| (?=\w)[\x{08A0}-\x{08FF}] | Arabic Extended-A | 96 | 96 | | 0 ! 42 | 95 |
| (?=\w)[\x{0900}-\x{097F}] | Devanagari | 128 | 128 | | 83 ! 91 | 125 |
| (?=\w)[\x{0980}-\x{09FF}] | Bengali | 128 | 96 | | 63 ! 65 | 85 |
| (?=\w)[\x{0A00}-\x{0A7F}] | Gurmukhi | 128 | 80 | | 61 ! 61 | 79 |
| (?=\w)[\x{0A80}-\x{0AFF}] | Gujarati | 128 | 91 | | 62 ! 63 | 89 |
| (?=\w)[\x{0B00}-\x{0B7F}] | Oriya | 128 | 91 | | 63 ! 63 | 84 |
| (?=\w)[\x{0B80}-\x{0BFF}] | Tamil | 128 | 72 | | 47 ! 47 | 61 |
| (?=\w)[\x{0C00}-\x{0C7F}] | Telugu | 128 | 101 | | 64 ! 68 | 92 |
| (?=\w)[\x{0C80}-\x{0CFF}] | Kannada | 128 | 92 | | 63 ! 68 | 91 |
| (?=\w)[\x{0D00}-\x{0D7F}] | Malayalam | 128 | 118 | | 69 ! 77 | 100 |
| (?=\w)[\x{0D80}-\x{0DFF}] | Sinhala | 128 | 91 | | 59 ! 69 | 90 |
| (?=\w)[\x{0E00}-\x{0E7F}] | Thai | 128 | 87 | | 83 ! 67 | 83 |
| (?=\w)[\x{0E80}-\x{0EFF}] | Lao | 128 | 83 | | 50 ! 66 | 83 |
| (?=\w)[\x{0F00}-\x{0FFF}] | Tibetan | 256 | 211 | | 59 ! 60 | 137 |
| (?=\w)[\x{1000}-\x{109F}] | Myanmar | 160 | 160 | | 94 ! 94 | 152 |
| (?=\w)[\x{1200}-\x{137F}] | Ethiopic | 384 | 358 | | 326 ! 326 | 329 |
| (?=\w)[\x{16A0}-\x{16FF}] | Runic | 96 | 89 | | 78 ! 83 | 86 |
| (?=\w)[\x{1700}-\x{171F}] | Tagalog | 32 | 23 | | 17 ! 19 | 23 |
| (?=\w)[\x{1720}-\x{173F}] | Hanunoo | 32 | 23 | | 18 ! 18 | 21 |
| (?=\w)[\x{1740}-\x{175F}] | Buhid | 32 | 20 | | 18 ! 18 | 20 |
| (?=\w)[\x{1760}-\x{177F}] | Tagbanwa | 32 | 18 | | 16 ! 16 | 18 |
| (?=\w)[\x{1780}-\x{17FF}] | Khmer | 128 | 114 | | 64 ! 64 | 97 |
| (?=\w)[\x{1800}-\x{18AF}] | Mongolian | 176 | 158 | | 140 ! 139 | 146 |
| (?=\w)[\x{1900}-\x{194F}] | Limbu | 80 | 68 | | 39 ! 41 | 65 |
| (?=\w)[\x{1A00}-\x{1A1F}] | Buginese | 32 | 30 | | 23 ! 23 | 28 |
| (?=\w)[\x{1A20}-\x{1AAF}] | Tai Tham | 144 | 127 | | 0 ! 74 | 114 |
| (?=\w)[\x{1AB0}-\x{1AFF}] | Combining Diacritical Marks Extended | 80 | 58 | | 0 ! 0 | 58 |
| (?=\w)[\x{1B00}-\x{1B7F}] | Balinese | 128 | 127 | | 64 ! 65 | 96 |
| (?=\w)[\x{1B80}-\x{1BBF}] | Sundanese | 64 | 64 | | 42 ! 48 | 64 |
| (?=\w)[\x{1BC0}-\x{1BFF}] | Batak | 64 | 56 | | 0 ! 38 | 52 |
| (?=\w)[\x{1C00}-\x{1C4F}] | Lepcha | 80 | 74 | | 49 ! 49 | 69 |
| (?=\w)[\x{1CD0}-\x{1CFF}] | Vedic Extensions | 48 | 43 | | 0 ! 13 | 42 |
| (?=\w)[\x{1DC0}-\x{1DFF}] | Combining Diacritical Marks Supplement | 64 | 64 | | 0 ! 0 | 64 |
| (?=\w)[\x{2000}-\x{206F}] | General Punctuation | 112 | 111 | | 0 ! 0 | 5 |
| (?=\w)[\x{20D0}-\x{20FF}] | Combining Diacritical Marks for Symbols | 48 | 33 | | 0 ! 0 | 33 |
| (?=\w)[\x{2150}-\x{218F}] | Number Forms | 64 | 60 | | 41 ! 2 | 41 |
| (?=\w)[\x{2460}-\x{24FF}] | Enclosed Alphanumerics | 160 | 160 | | 0 ! 0 | 52 |
| (?=\w)[\x{2C80}-\x{2CFF}] | Coptic | 128 | 123 | | 101 ! 107 | 110 |
| (?=\w)[\x{2D30}-\x{2D7F}] | Tifinagh | 80 | 59 | | 55 ! 57 | 58 |
| (?=\w)[\x{2DE0}-\x{2DFF}] | Cyrillic Extended-A | 32 | 32 | | 0 ! 0 | 32 |
| (?=\w)[\x{3000}-\x{303F}] | CJK Symbols and Punctuation | 64 | 64 | | 22 ! 9 | 28 |
| (?=\w)[\x{3040}-\x{309F}] | Hiragana | 96 | 93 | | 89 ! 89 | 91 |
| (?=\w)[\x{A640}-\x{A69F}] | Cyrillic Extended-B | 96 | 96 | | 69 ! 78 | 94 |
| (?=\w)[\x{A6A0}-\x{A6FF}] | Bamum | 96 | 88 | | 0 ! 70 | 82 |
| (?=\w)[\x{A800}-\x{A82F}] | Syloti Nagri | 48 | 45 | | 32 ! 32 | 41 |
| (?=\w)[\x{A880}-\x{A8DF}] | Saurashtra | 96 | 82 | | 60 ! 60 | 80 |
| (?=\w)[\x{A8E0}-\x{A8FF}] | Devanagari Extended | 32 | 32 | | 0 ! 9 | 28 |
| (?=\w)[\x{A900}-\x{A92F}] | Kayah Li | 48 | 48 | | 38 ! 38 | 46 |
| (?=\w)[\x{A930}-\x{A95F}] | Rejang | 48 | 37 | | 23 ! 23 | 36 |
| (?=\w)[\x{A980}-\x{A9DF}] | Javanese | 96 | 91 | | 0 ! 58 | 76 |
| (?=\w)[\x{A9E0}-\x{A9FF}] | Myanmar Extended-B | 32 | 31 | | 0 ! 30 | 31 |
| (?=\w)[\x{AA00}-\x{AA5F}] | Cham | 96 | 83 | | 62 ! 62 | 79 |
| (?=\w)[\x{AA60}-\x{AA7F}] | Myanmar Extended-A | 32 | 32 | | 0 ! 26 | 29 |
| (?=\w)[\x{AA80}-\x{AADF}] | Tai Viet | 96 | 72 | | 0 ! 61 | 70 |
| (?=\w)[\x{AAE0}-\x{AAFF}] | Meetei Mayek Extensions | 32 | 23 | | 0 ! 14 | 21 |
| (?=\w)[\x{ABC0}-\x{ABFF}] | Meetei Mayek | 64 | 56 | | 0 ! 45 | 55 |
| (?=\w)[\x{FB00}-\x{FB4F}] | Alphabetic Presentation Forms | 80 | 58 | | 56 ! 56 | 57 |
| (?=\w)[\x{FE00}-\x{FE0F}] | Variation Selectors | 16 | 16 | | 0 ! 0 | 16 |
| (?=\w)[\x{FE20}-\x{FE2F}] | Combining Half Marks | 16 | 16 | | 0 ! 0 | 16 |
| (?=\w)[\x{FE30}-\x{FE4F}] | CJK Compatibility Forms | 32 | 32 | | 0 ! 0 | 5 |
| (?=\w)[\x{FF00}-\x{FFEF}] | Halfwidth and Fullwidth Forms | 240 | 225 | | 172 ! 172 | 173 |
•-------------------------------•----------------------------------------------------•----------•----------• •------------•-----------•-----------•
| (?=\w)[\x{102E0}-\x{102FF}] | Coptic Epact Numbers | 32 | 28 | | 0 | 0 | 1 |
| (?=\w)[\x{10330}-\x{1034F}] | Gothic | 32 | 27 | | 0 | 25 | 27 |
| (?=\w)[\x{10350}-\x{1037F}] | Old Permic | 48 | 43 | | 0 | 38 | 43 |
| (?=\w)[\x{103A0}-\x{103DF}] | Old Persian | 64 | 50 | | 0 | 44 | 49 |
| (?=\w)[\x{1CF00}-\x{1CFCF}] | Znamenny Musical Notation | 208 | 185 | | 0 | 0 | 69 |
| (?=\w)[\x{1D100}-\x{1D1FF}] | Musical Symbols | 256 | 233 | | 0 | 0 | 30 |
| (?=\w)[\x{1D800}-\x{1DAAF}] | Sutton SignWriting | 688 | 672 | | 0 | 0 | 127 |
| (?=\w)[\x{1E000}-\x{1E02F}] | Glagolitic Supplement | 48 | 38 | | 0 | 0 | 38 |
| (?=\w)[\x{1E030}-\x{1E08F}] | Cyrillic Extended-D | 96 | 63 | | 0 | 62 | 63 |
| (?=\w)[\x{1E100}-\x{1E14F}] | Nyiakeng Puachue Hmong | 80 | 71 | | 0 | 63 | 70 |
| (?=\w)[\x{1E290}-\x{1E2BF}] | Toto | 48 | 31 | | 0 | 30 | 31 |
| (?=\w)[\x{1E2C0}-\x{1E2FF}] | Wancho | 64 | 59 | | 0 | 54 | 58 |
| (?=\w)[\x{1E4D0}-\x{1E4FF}] | Nag Mundari | 48 | 42 | | 0 | 38 | 42 |
| (?=\w)[\x{1E5D0}-\x{1E5FF}] | Ol Onal | 48 | 44 | | 0 | 41 | 43 |
| (?=\w)[\x{1E6C0}-\x{1E6FF}] | Tai Yo | 64 | 55 | | 0 | 50 | 55 |
| (?=\w)[\x{1E800}-\x{1E8DF}] | Mende Kikakui | 224 | 213 | | 0 | 197 | 204 |
| (?=\w)[\x{1E900}-\x{1E95F}] | Adlam | 96 | 88 | | 0 | 79 | 86 |
| (?=\w)[\x{1F100}-\x{1F1FF}] | Enclosed Alphanumeric Supplement | 256 | 200 | | 0 | 0 | 78 |
•-------------------------------•----------------------------------------------------•----------•----------• •------------•-----------•-----------•
| (?=\w)[\x{E0100}-\x{E01EF}] | Variation Selectors Supplement | 240 | 240 | | 0 | 0 | 240 |
•-------------------------------•----------------------------------------------------•----------•----------• •------------•-----------•-----------•
Notes :
Unlike the Plane 0 and Plane 14, the Unicode Plane 1 does not include all the différences : it’s just for testing !
The Plane 2 and Plane 3 give identical results.
Although this post focuses on differences between your two plugins, remark that the native Notepad++ search and the MultiReplace search give identical results, throughout all the Unicode planes and blocks.
As promised, I’ll give you, very soon, my suggestions and preferences regarding your post !
Best Regards,
guy038