- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我对 RegexBuddy 提供的 Regex Unicode 属性感到迷茫,我无法区分任何数字属性,而数学符号属性似乎只匹配 +
但不是 -
, *
, /
, ^
例如。
是否有任何文档/引用与正则表达式 Unicode 属性的示例?
最佳答案
Unicode 字符属性
您在示例中列出的那些实际上都是相同的 Unicode 字符属性,即 General Category 属性。一些正则表达式系统仅提供对这一属性的访问;其他包括访问 Block 属性(不是很有用)或 Script 属性( 更 更有用)。
在 🐪 Programming Perl, 4th edition 的第 209 页的以下文本中给出了对 Perl 正则表达式中的 \p{Property Name}
和 \p{Property Name = Property Value}
语法的更完整的解释,在此经其作者的许可转载:😼
All standard Unicode properties are actually composed of two parts, as in
\p{NAME=VALUE}
. All one-part properties are therefore additions to official Unicode properties. Boolean properties whose values are true can always be abbreviated as one-part properties, which allows you to write\p{Lowercase}
for\p{Lowercase=True}
. Other types of properties besides Boolean properties take string, numeric, or enumerated values. Perl also provides one-part aliases for all general category, script, and block properties, plus the level-one recommendations from Unicode Technical Standard #18 on Regular Expressions (version 13, from 2008-08), such as\p{Any}
.For example,
\p{Armenian}
,\p{IsArmenian}
, and\p{Script=Armenian}
all represent the same property, as do\p{Lu}
,\p{GC=Lu}
,\p{Uppercase_Letter}
, and\p{General_Category=Uppercase_Letter}
. Other examples of binary properties (those whose values are implicitly true) include\p{Whitespace}
,\p{Alphabetic}
,\p{Math}
, and\p{Dash}
. Examples of properties that aren’t binary properties include\p{Bidi_Class=Right_to_Left}
,\p{Word_Break=A_Letter}
, and\p{Numeric_Value=10}
. The perluniprops manpage lists all properties and their aliases that Perl supports, both standard Unicode properties and the Perl specials, too.
RL1.2 Properties
To meet this requirement, an implementation shall provide at least a minimal list of properties, consisting of the following:
- General_Category
- Script
- Alphabetic
- Uppercase
- Lowercase
- White_Space
- Noncharacter_Code_Point
- Default_Ignorable_Code_Point
- ANY, ASCII, ASSIGNED
\w
、
\d
、
\s
、
\b
这样的单字母字符类缩写,以及它们的大写补码,以及像
\p{alpha}
这样的 POSIX 发音名称,它们本身是根据以下定义的
UTS#18’s Annex C on Compatibility Properties 中的 Unicode 字符属性。
Pattern
class 和
Matthew Barnett’s excellent regexp
library for Python 2 and Python 3 。 Android 中使用的正则表达式实际上是 ICU 的,而不是人们想象的 Java 的,因此使用 Unicode 效果更好。
UNICODE_CHARACTER_CLASS
模式编译标志或嵌入的
(?U)
来获得 RL1.2a (
\w
&c) 的东西。对于
PCRE ,您似乎需要嵌入
(*PCRE_UCP)
,或将其用作编译标志。这可能取决于您的 php 版本是如何构建的,这可能是一个问题。
alpha
、
upper
、
lower
和
space
被专门记录为仅 7 位 ASCII,这违反了
RL 1.2a 。但是,PCRE 还提供以下特价商品:
Xan
字母数字:属性 L 和 N 的并集 Xps
POSIX 空格:属性 Z 或制表符、NL、VT、FF、CR Xsp
Perl 空格:属性 Z 或制表符、NL、FF、CR Xwd
Perl 字:属性 Xan 或下划线 \p{Xan}
仍然不同于 Unicode 所说的
\p{alnum}
必须表示的含义,因为它缺少例如组合标记和某些字母符号。 Perl
\p{alnum}
遵循 Unicode 定义。总的来说,PCRE 的
\p{Xwd}
与 Unicode(和 Perl)的不同之处在于它缺少额外的字母和其余的
\p{GC=Connector_Punctuation}
字符。 UTS#18 的下一个修订版还将
\p{Join_Control}
添加到
\p{word}
字符集。
\N{…}
代替
\p{name=…}
语法)
the new RL 2.7 on Full Properties 来自提议本月早些时候发布的 UTS#18 更新,部分内容如下:
RL2.7 Full Properties
To meet this requirement, an implementation shall support all of the properties listed below that are in the supported version of Unicode, with values that match the Unicode definitions for that version.
To meet requirement RL2.7, the implementation must satisfy the Unicode definition of the properties for the supported version of Unicode, rather than other possible definitions. However, the names used by the implementation for these properties may differ from the formal Unicode names for the properties. For example, if a regex engine already has a property called "Alphabetic", for backwards compatibility it may need to use a distinct name, such as "Unicode_Alphabetic", for the corresponding property listed in RL1.2.
[table omitted for brevity —tchrist]
The Name and Name_Alias properties are used in
\p{name=…}
and\N{…}
. The data in NamedSequences.txt is also used in\N{…}
. For more information see Section 2.5, Name Properties. The Script and Script_Extensions properties are used in\p{scx=…}
. For more information, see Section 1.2.2, Script_Property. The list excludes contributory, obsolete, and deprecated properties, most provisional properties, and the Unicode_1_Name and Unicode_Radical_Stroke properties. The properties in gray are covered by RL1.2 Properties. For more information on properties, see UAX #44, Unicode Character Database [UAX44].
$ uniprops -a 3b1
U+03B1 ‹α› \N{GREEK SMALL LETTER ALPHA}
\w \pL \p{LC} \p{L_} \p{L&} \p{Ll}
All Any Alnum Alpha Alphabetic Assigned Greek Is_Greek InGreek Cased Cased_Letter LC
Changes_When_Casemapped CWCM Changes_When_Titlecased CWT Changes_When_Uppercased CWU Ll L Gr_Base
Grapheme_Base Graph GrBase Grek Greek_And_Coptic ID_Continue IDC ID_Start IDS Letter L_
Lowercase_Letter Lower Lowercase Print Word XID_Continue XIDC XID_Start XIDS X_POSIX_Alnum
X_POSIX_Alpha X_POSIX_Graph X_POSIX_Lower X_POSIX_Print X_POSIX_Word
Age=1.1 Bidi_Class=L Bidi_Class=Left_To_Right BC=L Block=Greek Block=Greek_And_Coptic BLK=Greek
Canonical_Combining_Class=0 Canonical_Combining_Class=Not_Reordered CCC=NR
Canonical_Combining_Class=NR Decomposition_Type=None DT=None East_Asian_Width=A
East_Asian_Width=Ambiguous EA=A Grapheme_Cluster_Break=Other GCB=XX Grapheme_Cluster_Break=XX
Script=Greek Hangul_Syllable_Type=NA Hangul_Syllable_Type=Not_Applicable HST=NA
Joining_Group=No_Joining_Group JG=NoJoiningGroup Joining_Type=Non_Joining JT=U Joining_Type=U
Line_Break=AL Line_Break=Alphabetic LB=AL Numeric_Type=None NT=None Numeric_Value=NaN NV=NaN
Present_In=1.1 IN=1.1 Present_In=2.0 IN=2.0 Present_In=2.1 IN=2.1 Present_In=3.0 IN=3.0 Present_In=3.1
IN=3.1 Present_In=3.2 IN=3.2 Present_In=4.0 IN=4.0 Present_In=4.1 IN=4.1 Present_In=5.0 IN=5.0
Present_In=5.1 IN=5.1 Present_In=5.2 IN=5.2 Present_In=6.0 IN=6.0 SC=Grek Script=Grek
Sentence_Break=LO Sentence_Break=Lower SB=LO Word_Break=ALetter WB=LE Word_Break=LE
$ unichars '\pN' '\D' '\p{Latin}'
Ⅰ 8544 02160 ROMAN NUMERAL ONE
Ⅱ 8545 02161 ROMAN NUMERAL TWO
Ⅲ 8546 02162 ROMAN NUMERAL THREE
Ⅳ 8547 02163 ROMAN NUMERAL FOUR
Ⅴ 8548 02164 ROMAN NUMERAL FIVE
Ⅵ 8549 02165 ROMAN NUMERAL SIX
Ⅶ 8550 02166 ROMAN NUMERAL SEVEN
Ⅷ 8551 02167 ROMAN NUMERAL EIGHT
(etc)
$ uninames Old English
æ 00E6 LATIN SMALL LETTER AE
= latin small ligature ae (1.0)
= ash (from Old English æsc)
* Danish, Norwegian, Icelandic, Faroese, Old English, French, IPA
x (latin small ligature oe - 0153)
x (cyrillic small ligature a ie - 04D5)
ð 00F0 LATIN SMALL LETTER ETH
* Icelandic, Faroese, Old English, IPA
x (latin capital letter eth - 00D0)
x (greek small letter delta - 03B4)
x (partial differential - 2202)
þ 00FE LATIN SMALL LETTER THORN
* Icelandic, Old English, phonetics
* Runic letter borrowed into Latin script
x (runic letter thurisaz thurs thorn - 16A6)
œ 0153 LATIN SMALL LIGATURE OE
= ethel (from Old English eðel)
* French, IPA, Old Icelandic, Old English, ...
x (latin small letter ae - 00E6)
x (latin letter small capital oe - 0276)
ƿ 01BF LATIN LETTER WYNN
= wen
* Runic letter borrowed into Latin script
* replaced by "w" in modern transcriptions of Old English
* uppercase is 01F7
x (runic letter wunjo wynn w - 16B9)
ǣ 01E3 LATIN SMALL LETTER AE WITH MACRON
* Old Norse, Old English
: 00E6 0304
⁊ 204A TIRONIAN SIGN ET
* Irish Gaelic, Old English, ...
x (ampersand - 0026)
关于php - 正则表达式 - Unicode 属性引用和示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55508674/
我还没有找到太多关于何时使用 Unicode 的(简明)信息。我知道很多人说最佳实践是始终使用 Unicode。但 Unicode 字符串确实有更多的内存占用。我是否正确地说,必须仅在以下情况下使用
我正在构建一个需要使用表情符号的应用程序,特别是生成大量随机表情符号序列。这需要有一个大列表可供选择。而不是采取方法 detailed here通过循环硬编码十六进制范围,我决定采用不同的方法并从 t
早在 ZX Spectrum 的早期,就有一种方法可以将一个字形打印在另一个字形之上,从而在 OVER 1 指令的帮助下创建复合字形。 我想知道是否有 Unicode 方法可以在现代计算机上执行相同的
我有一个表示 Unicode 代码点的字符串,例如 "272d"。如何将其转换为 "✭"? Elixir 当然理解 Unicode: iex> > "✭" iex> "x{272d}" "✭" 但我需
自从我了解到 clang 能够编译用 Unicode 编写的 c++ 源文件后,我在编写与数学相关的代码时就开始大量使用它。比较 uₙ₊₁ᵖ = A*uₙ + B*uₙ₋₁; uₙ₊₁ᶜ = π *
感谢jmcnamara我发现了一种在 xlsxwriter 图表中使用 Unicode 字符的好方法:xlsxwrter: rich text format in chart title 我需要一个所
有些字符不包含在 Unicode 中(即带重音的西里尔字母),但可以使用组合序列创建。据我了解,可能的组合字符序列是在布局引擎和/或使用的字体中定义的。我对吗?那么,如何得到所有可能的组合序列呢? 最
我正在尝试使用 libunibreak ( https://github.com/adah1972/libunibreak ) 来标记某些给定 unicode 文本中可能的换行符。 Libunibre
我需要具有属性 Alphabetic 的 Unicode 字符范围列表如 http://www.unicode.org/Public/5.1.0/ucd/UCD.html#Alphabetic 中所定
我想为 Unicode 中的特定字符找到视觉上相同的字符。 我知道如何找到一个字符的规范或兼容性分解;但他们没有给我我想要的。 我想找到视觉上相同(不相似)的字符,它们唯一的区别可能是它们的大小。 例
假设我有包含此字符串的 Apache Solr 索引文档: Klüft skräms inför 我希望能够使用此关键字通过搜索找到它(注意“u”-“ü”): kluft 有没有办法做到这一点 ? 最
我已经阅读了很多文章以了解 Unicode 代码点的最大数量,但我没有找到最终答案。 我知道 Unicode 代码点已最小化,以使所有 UTF-8 UTF-16 和 UTF-32 编码都能够处理相同数
我正在使用 CSS Buttons With Icons But No Images . 图标是使用 unicode 值生成的。在这方面,我遇到了一些浏览器不支持某些 unicode 值的问题。因此,
我正在寻找一种方法将 Unicode 字母字符从任何语言音译为带重音的拉丁字母。目的是让外国人深入了解以任何非拉丁文字书写的姓名和单词的发音。 例子: 希腊语:Romanize("Αλφαβητικό
Unicode 6.0 添加了几个带有描述的字符,表明这些字符应该以特定颜色呈现: 红苹果 U+1F34E 青苹果 U+1F34F 蓝心U+1F499 绿心U+1F49A 黄心U+1F49B 紫心U+
我想知道,Unicode 中的每个字符都有一个代码点;字体中字符的类似术语是什么? 当解码文件需要映射到字体(或字体,通过一些现代字体替换技术)时,我从来没有理解过程的一部分。 例如,当文本编辑器从其
谁能告诉我 Unicode 可打印字符的范围是多少? [例如。 Ascii 可打印字符范围为\u0020 -\u007f] 最佳答案 参见,http://en.wikipedia.org/wiki/U
鉴于Unicode有been around for 18 years ,为什么还有不支持 Unicode 的应用程序?甚至我对某些操作系统和 Unicode 的体验至少可以说是痛苦的。正如乔尔·斯波尔
我要求计算 Unicode 中所有可能的有效组合的数量并附上解释。我知道一个 char 可以编码为 1、2、3 或 4 个字节。我也不明白为什么连续字节有限制,即使该字符的起始字节清除了它应该有多长。
Unicode 为中文字符分配了 U+4E00..U+9FFF。这是全套的一部分,但不是全部。 最佳答案 最终列表可以在 Unicode Character Code Charts 找到;在页面中搜索
我是一名优秀的程序员,十分优秀!